Удаляются ли объекты после завершения вызова функции, если они созданы внутри функции? - PullRequest
0 голосов
/ 08 марта 2019

В настоящее время я создаю модель класса с 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 обрабатывает объекты внутри функций. Будут ли у меня проблемы с памятью, если я создаю много объектов без должного удаления старых?

Мой вопрос несколько отличается от возможного дубликата, предложенного ниже, потому что я спрашиваю комбинацию методов, которые вызываются для объектов, которые завершаются внутри другого объекта, а также спрашиваю, собирают ли они мусор в конце своей области видимости.

...