Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2012 23:10:10

bav
Зарегистрирован: 2012-09-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление списка и его содержимого

Добрый день, уважаемые. Помогите, пожалуйста, разрешить следующий вопрос. Удалится ли содержимое списка, если удалить сам список (т.е. обнулить счетчик ссылок на этот список). Приведу пример:

# Имеем класс реализующий точку
class Point:
	def __init__(self, x = 0, y = 0):
		self.x = x
		self.y = y
# Затем где-нибудь создаем список и добавляем
# в него два экземпляра класса Point.
someList = []
someList.append(Point(1, 2))
someList.append(Point(3, 4))
# Теперь, насколько я понимаю, у нас имеется ссылка на список
# в переменной someList и две ссылки на экземпляры точек в этом списке.
# Допустим теперь мы делаем так:
someList = "bla-bla-bla"
# Вопрос: будут ли после этого доступны для сборщика мусора
# экземпляры класса Point, ссылки на которые хранились в списке?

Офлайн

#2 Сен. 27, 2012 23:32:04

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

Удаление списка и его содержимого

Не доверяете сборщику мусора?
В консоли

>>> class Point:
...     def __init__(self, x = 0, y = 0):
...         self.x = x
...         self.y = y
...     def __del__(self):
...         print "dying :(", id(self)
...
>>> some_list = [Point(1,2), Point(3,4)]
>>> some_list = "blal"
dying :( 57101128
dying :( 57100744

Насчет __del__
http://docs.python.org/reference/datamodel.html#object.__del__
Called when the instance is about to be destroyed.
Т.е __del__ вставлен только для того, чтобы вывести сообщение при “утилизации” сборщиком мусора.

Отредактировано EBFE (Сен. 27, 2012 23:39:18)

Офлайн

#3 Сен. 27, 2012 23:35:50

bav
Зарегистрирован: 2012-09-27
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление списка и его содержимого

Ох не доверяю . Действительно, проверка оказалась проще некуда. Спасибо, EBFE

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version