Stavo osservando la domanda Stack Overflow Counting instances of a class? e non sono sicuro del motivo per cui la soluzione funzioni e l'altra con l'aggiunta semplice no. Immagino che questa sia più una questione di come le variabili di classe e di istanza siano archiviate e accessibili.Modifica di un attributo di classe all'interno di __init__
Ecco il codice penso dovrebbe funzionare, ma invece produce 4
per ogni 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
La dichiarazione self.num +=1
è in qualche modo funziona (l'aggiunta sta accadendo, ma non l'assegnazione).
Cosa sta succedendo sotto il cofano che sta facendo fallire questo compito qui, mentre l'assegnazione itertools.count
riesce nella soluzione dell'altro problema?
In alternativa, 'self .__ class __ num + = 1' – robert
@ Robert che avrebbe funzionato, ma io lo trovo un po 'imbarazzante – jonrsharpe