Этот код...
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')
Выдает следующую ошибку...
Exception AttributeError: "'NoneType' object has no attribute 'num_of_people'" in <bound method Person.__del__ of <__main__.Person object at 0x7f5593632590>> ignored
Но этого кода нет.
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')
Единственная разница, которую я вижу, это последнее имя переменной "vb" и "v".
Я склоняюсь к Python и сейчас работаю над ООП.
__del__
, у вас не было бы этой проблемы, и я считаю, что код, который вы написали, неправильно использует__del__
. На самом деле в python‹3.4 вы можете легко создать несколько циклов ссылок, чтобы ваш счетчикnum_of_people
был выключен. - person Bakuriu   schedule 04.04.2014