class Orga:
c = 0
def __init__(self, name):
self.name = name
print ('Creating Orga %s' % self.name)
Orga.c += 1
print ('Orga count is %d' % Orga.c)
def __del__(self):
print ('Deleting Orga %s' % self.name)
Orga.c -= 1
print ('Orga count is %d' % Orga.c)
o = Orga('abc')ожидается:
Creating Orga abc
Orga count is 1
Deleting Orga abc
Orga count is 0
на деле получаем:
Creating Orga abc
Orga count is 1
Deleting Orga abc
Exception AttributeError: "'NoneType' object has no attribute 'c'" in <bound method Orga.__del__ of <__main__.Orga instance at 0x7fa4b2db0e18>> ignored
код c ручным удалением
class Orga:
c = 0
def __init__(self, name):
self.name = name
print ('Creating Orga %s' % self.name)
Orga.c += 1
print ('Orga count is %d' % Orga.c)
def __del__(self):
print ('Deleting Orga %s' % self.name)
Orga.c -= 1
print ('Orga count is %d' % Orga.c)
o = Orga('abc')
del oа также код с другим названием класса
class Orgb:
c = 0
def __init__(self, name):
self.name = name
print ('Creating Orgb %s' % self.name)
Orgb.c += 1
print ('Orgb count is %d' % Orgb.c)
def __del__(self):
print ('Deleting Orgb %s' % self.name)
Orgb.c -= 1
print ('Orgb count is %d' % Orgb.c)
o = Orgb('abc')работают как положено.
"'NoneType' object has no attribute" вываливается при названиях классов, начинающихся с Orga: Orga, Organ, Organi, Organic и т.д.
проверено в python 2.7.3, python 3.2.3
