Python – Gibt über eine Klassenmethode eine neue Instanz von sich selbst zurück
漂亮男人
漂亮男人 2017-05-18 10:53:17
0
2
629

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!

漂亮男人
漂亮男人

Antworte allen(2)
给我你的怀抱

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

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

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

将y正确的生成

什么是正确的y

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage