Image

Imagesontar wrote in Imageru_python

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