Предположим, у нас есть класс на python:
class A(object):
def __del__(self):
print "Del!"
__ del __
вызывается при удалении / сборке мусора любого экземпляра A
.
Можно ли сделать то же самое для класса? Я хотел бы, чтобы какой-то метод вызывался, когда сам класс собирает мусор, что, как я предполагаю, выполняется при выходе из скрипта.
Заранее спасибо за любые указатели!
Edit: Как я и ожидал, все пытаются оттолкнуть меня от использования этой техники (я бы, наверное, сам сделал такой комментарий :)), хотя вопрос все еще стоит: возможно ли это?
Я хочу следующее: у меня есть класс со статическим членом, который нужно очистить.
class A(object):
class Meta(type):
def __new__(mcs, name, bases, attrs):
attrs['conn'] = sqlite3.connect( DB_FILE )
return type.__new__(mcs, name, bases, attrs)
__metaclass__ = Meta
Я бы хотел A.conn.close ()
, но незадолго до закрытия программы, то есть когда я знаю, что больше никогда не будет создано экземпляров A
. Я знаю, что могу сделать это с помощью atexit
, но это кажется очень некрасивым.