Создать экземпляр класса очень просто: достаточно вызвать класс, как если
бы он был функцией, передав аргменты, определенные в методе __init__.
Возвращаемое значение и есть созданный объект.
Если создаются экземпляры классов просто, то уничтожаются они еще проще.
Как правило нет необходимости это делать явно, так как удаление происходит
автоматически при выходе объектов за пределы области видимости. Утечки памяти
в Python бывают редко.
Технический термин для этого вида сборки мусора — “подсчет
ссылок”. Python всегда знает количество ссылок на каждый созданный
объект. В приведенном примере была единственная ссылка — локальная
переменная f. При выходе из функции переменная
f выходит из области видимости, количество ссылок становится
равным нулю и Python автоматически уничтожает экземпляр.
Бывают ситуации, когда подсчет ссылок не дает нужного результата. Если
вы создаете объекты, ссылающиеся друг на друга (например, двусвязные списки, в
которых каждый элемент имеет ссылку на следующий и предыдущий элемент в
списке), ни один из объектов не может быть уничтожен, так как счетчик ссылок не
достигает нуля. Начиная с версии 2.0 в языке Python есть дополнительный
способ сборки мусора (“mark-and-sweep”), достаточно
сообразительный, чтобы работать с такими ситуациями и корректно разрывать
циклические ссылки.
Работа со структурами данных в языках Си и Python: Часть 3. - IBM |
26 апр 2011 ... У двусвязных списков есть свои преимущества, так как они .... Для создания
самого списка, также будет использоваться макрос ... http://www.ibm.com/developerworks/ru/library/l-data_structures_03/ |
Как бывшего философа, меня беспокоит мысль о том, что какие-то вещи
исчезают, когда никто на них никто не смотрит, но это именно то, что происходит
в языке Python. В общем, вы можете просто забыть об управлении памятью и
предоставить интерпретатору возможность делать это за вас.