Какой жизненный цикл объекта в Python
Python
Senior
СБЕР Роботы
Какой жизненный цикл объекта в Python
Ответы
Объект в Python проходит следующие этапы жизненного цикла:
- **Создание** - объект создается при вызове конструктора (`__new__`) и инициализируется (`__init__`).
- **Использование** - объект доступен в программе, на него могут ссылаться переменные.
- **Уничтожение** - когда ссылок на объект не остается, сборщик мусора вызывает `__del__` (если определен) и освобождает память.
Пример:
```
class Test:
def __init__(self, name):
self.name = name
print(f"Создан {self.name}")
def __del__(self):
print(f"Удален {self.name}")
a = Test("obj1") # Создание
b = a # Новая ссылка
del a # Удаление ссылки
del b # Удаление последней ссылки -> вызов __del__
```
Важные нюансы:
- `__del__` вызывается не сразу после удаления последней ссылки, а когда срабатывает сборщик мусора
- Циклические ссылки могут предотвратить автоматическое удаление
- Для явного управления ресурсами лучше использовать контекстные менеджеры (`with`)