Вопрос такой у меня есть специальный метод __del__ внутри класса.
В книге A Byte of Python сказано,
ссылка в книгу
страница 114-115.
__del__ запускается только тогда, когда объект перестаёт использоваться, заранее не известно когда это момент наступеть.
Вернемся на мою код, у меня после создания экземпляра сразу вызывается __del__
тоест
вот я создаю
droid1 = Robot('R2-D2')
droid1.sayHi()
После того сразу вызывается __del__
А если после droid1 создаем еще объект droid2 то тогда после droid1 сразу не вызывается __del__
droid1 = Robot('R2-D2')
droid1.sayHi()
droid2 = Robot('R2-D2')
droid2.sayHi()
а после droid2 вызывается __del__.
В книге написано, явно уничтожается объект
del droid1
del droid2
У меня все вызывается без уничтожения с помощю __del__ что не так или в порядке.
Я не понимаю.
Вот такой код.
class Robot:
population = 0
def __init__(self,name):
self.name = name
print('(Инициализация {0})'.format(self.name))
Robot.population += 1
def __del__(self):
print('{0} Уничтожается!'.format(self.name))
Robot.population -= 1
if Robot.population == 0:
print('{0} Был последним.'.format(self.name))
else:
print('Осталось {0:d} работающих роботов'.format(Robot.population))
def sayHi(self):
print('Приветствую! Мои хозяева называют меня {0}.'.format(self.name))
def howMany():
print('У нас {0:d} роботов.'.format(Robot.population))
howMany = staticmethod(howMany)
droid1 = Robot('R2-D2')
droid1.sayHi()
droid1.howMany()
print()
droid2 = Robot('cp-120')
droid2.sayHi()
droid2.howMany()