В настоящее время я создаю модель класса с save()
методом для вставки / обновления в базу данных, например:
class Session(object):
#
# ...
#
def save(self):
try:
database = Database()
if self.id == None:
self.id = database.insert(
'<table>',
[<list of columns>],
[<list of values>]
)
if self.id == False:
raise RuntimeError('Database insert failed for Session class.')
else:
if not database.update(
'<table>',
[<list of columns>],
[<list of values>],
[<list of columns>],
[<list of values>]
):
raise RuntimeError('Database update failed for Session class.')
except (RuntimeError):
print(RuntimeError)
database.disconnect()
return True
Я создаю объект базы данных Database()
в методе сохранения моего Session
класса. Однако мне интересно, будут ли автоматически вызываться объекты __del__
, когда завершится метод класса Session
. Если это так, я бы предпочел, чтобы database.disconnect()
выполнялся внутри метода объектов базы данных __del__
вместо текущего Session
метода класса.
Я не совсем уверен, как Python обрабатывает объекты внутри функций. Будут ли у меня проблемы с памятью, если я создаю много объектов без должного удаления старых?
Мой вопрос несколько отличается от возможного дубликата, предложенного ниже, потому что я спрашиваю комбинацию методов, которые вызываются для объектов, которые завершаются внутри другого объекта, а также спрашиваю, собирают ли они мусор в конце своей области видимости.