Heim  >  Fragen und Antworten  >  Hauptteil

Python – Gibt über eine Klassenmethode eine neue Instanz von sich selbst zurück

Definieren Sie eine Klasse A und haben Sie eine Methode mit einer eigenen ID + 1. Der Code lautet wie folgt:

class A(object):
    def __init__(self, id):
        self.id = id
    def newid(self):
        self.id = self.id + 1
        return A(self.id)

Instanz x als Klasse A definieren, ID ist 1, x.id drucken:

[In]:
x = A(1)
print(x.id)

[Out]:
1

Jetzt möchte ich eine Instanz y erstellen, die auch eine Klasse A ist. Erstellen Sie sie mit der newid-Methode der Klasse A:

[In]:
y = x.newid()
print(y.id)

[Out]:
2

Sie können die genaue ID von y auf 2 bringen, aber Sie stellen fest, dass auch die ID von x geändert wurde:

[In]:
print(x.id)

[Out]:
2

Bitte sagen Sie mir, wie ich y korrekt generieren kann, ohne die ursprüngliche Instanz x zu ändern. Vielen Dank!

漂亮男人漂亮男人2734 Tage vor612

Antworte allen(2)Ich werde antworten

  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:55:17

    def newid(self):
    self.id = self.id + 1
    return A(self.id)

    这个必然变呀
    你要不变干嘛+1
    应该是return A(self.id+1)

    Antwort
    0
  • 某草草

    某草草2017-05-18 10:55:17

    def newid(self):
            self.id = self.id + 1    # 这里self.id 已经是2了
            return A(self.id)

    将y正确的生成

    什么是正确的y

    Antwort
    0
  • StornierenAntwort