170 похожих чатов

Буду признателен, если кто-то объяснит. Ибо не совсем понял почему

так происходит. Читаю книгу Укус Питона и там в разделе ООП есть следующее:

class Robot:
population = 0

def __init__(self, name):

self.name = name
print(f'(Инициализация {self.name})')
Robot.population += 1

def __del__(self):
print(f'{self.name} уничтожается!')
Robot.population -= 1
if Robot.population == 0:
print('{self.name} был последним.')
else:
print(f'Осталось {Robot.population} работающих роботов.')

def sayHi(self):
print(f'Приветствую! Мои хозяева называют меня {self.name}.')
def howMany():
print(f'У нас {Robot.population} роботов.')
howMany = staticmethod(howMany)

droid1 = Robot('R2-D3111')
droid1.sayHi()
Robot.howMany()

droid2 = Robot('C-3PO')
droid2.sayHi()
Robot.howMany()

print("\nЗдесь роботы могут проделать какую-то работу.\n")
print("Роботы закончили свою работу. Давайте уничтожим их.")

del droid1
del droid2

Robot.howMany()

объясните пожалуйста, почему если убрать:
del droid1
del droid2

Robot.howMany()
то запустив код роботы уничтожаются после инициализации?
такое чувство, будто метод del как бы должен в любом случае сработать. Но если я укажу где и когда, то они уничтожаться именно в этот момент, иначе скрипт сам посчитает нужным когда и где удалить.

3 ответов

17 просмотров

1. как ты это определил. если ты убрал явный del то объекты в твоем конкретном случае будут уничтожены по завершению скрипта (но не гарантированно вызван для них __del__> 2. del droid1 нихрена не "уничтожает". del удаляет ссылку на объект.

Ad1n1cA- Автор вопроса
Alex
1. как ты это определил. если ты убрал явный del т...

крч говоря, если я не прописываю del самостоятельно в нужном мне месте, этот метод в любом случае сработает по окончанию. Верно?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта