Ich habe mir die Stack Overflow-Frage Counting instances of a class? angesehen, und ich bin nicht sicher, warum diese Lösung funktioniert und eine, die eine einfache Addition verwendet, nicht. Ich denke, das ist eher eine Frage, wie Klassen- und Instanzvariablen gespeichert und auf sie zugegriffen wird.Ändern eines Klassenattributs innerhalb von __init__
Hier ist der Code, den ich denke, sollte funktionieren, sondern erzeugt stattdessen 4
für jeden id
:
class foo():
num = 3 # trying 3 instead of 0 or 1 to make sure the add is working
def __init__(self):
self.num += 1
self.id = self.num
f = foo()
g = foo()
print f.id # 4
print g.id # 4
Die self.num +=1
Aussage etwas arbeitet (die Zugabe geschieht, aber nicht die Zuordnung).
Was passiert unter der Haube, die diese Aufgabe hier fehlschlägt, während die itertools.count
Zuweisung in der anderen Frage Lösung gelingt?
Alternativ 'Selbst .__ Klasse __ num + = 1 ' – robert
@ Robert, die funktionieren würde, aber ich es finden ein bisschen peinlich – jonrsharpe