Questo codice ...Una semplice differenza nei nomi delle variabili Python3 altera il modo in cui il codice viene eseguito?
class Person:
num_of_people = 0
def __init__(self, name):
self.name = name
Person.num_of_people += 1
def __del__(self):
Person.num_of_people -= 1
def __str__(self):
return 'Hello, my name is ' + self.name
cb = Person('Corey')
kb = Person('Katie')
v = Person('Val')
produce il seguente errore ...
Exception AttributeError: "'NoneType' object has no attribute 'num_of_people'" in <bound method Person.__del__ of <__main__.Person object at 0x7f5593632590>> ignored
Ma questo codice non lo fa.
class Person:
num_of_people = 0
def __init__(self, name):
self.name = name
Person.num_of_people += 1
def __del__(self):
Person.num_of_people -= 1
def __str__(self):
return 'Hello, my name is ' + self.name
cb = Person('Corey')
kb = Person('Katie')
vb = Person('Val')
L'unica differenza che vedo è che l'ultimo nome di variabile è "vb" vs. "v".
Sto appoggiando Python e sto lavorando alle cose OOP ora.
@StevenRumbalski: In breve, sì. Ma solo all'uscita dell'interprete. –
Il primo codice non produce quell'eccezione. Mostra il tuo traceback completo. (Correzione: non produce quell'eccezione in Python 3.3 o versioni successive. In 3.2 lo fa.) – geoffspear
@Wooble Nah! Questo è quello che mi mancava .. – aIKid