Не полагайтесь на метод __del__
для сохранения вашего объекта. Подробности см. В этом сообщении в блоге .
Вы можете использовать протокол управления контекстом , определив __enter__
и __exit__
методы:
class A(object):
def __enter__(self):
print 'enter'
# create database object here (or in __init__)
pass
def __exit__(self, exc_type, exc_val, exc_tb):
print 'exit'
# save database object here
# other methods
Затем используйте оператор with
при создании объекта:
with A() as myobj:
print 'inside with block'
myobj.do_something()
При вводе блока with
будет вызван метод A.__enter__
. При выходе из блока with
будет вызван метод __exit__
. Например, с кодом выше вы должны увидеть следующий вывод:
введите
внутри с блоком
выход
Подробнее о выражении with
: