Извините за смутное название вопроса, но вопрос слишком длинный, чтобы вставить название. Если кто-то может перефразировать это лучше, пожалуйста, сделайте.
У меня есть справочный вопрос о том, как объекты собирают мусор. Насколько я помню, объекты собирают мусор, когда на него больше нет ссылок. Имея это в виду, будет ли удален объект, если все, что у меня есть, это ссылка на один из его элементов данных?
Вот простой пример класса, с которым я работаю (у меня он намного больше с гораздо большей функциональностью, поэтому я создаю экземпляр класса внутри себя для обработки логики):
class A:
def __init__(self):
self.my_list = []
def read_list_from_new_source(self):
new_instance = A()
for i in range(10):
new_instance.add(i)
self.my_list = new_instance.my_list
def add(self, element):
"""
Just adding an element to the list attribute of the class
"""
self.my_list.append(element)
У меня вопрос, будет ли new_instance
собираться мусором после завершения метода read_list_from_new_source
? Или он останется в памяти, потому что self.my_list
теперь содержит ссылку на один из его атрибутов?
Я знаю list
, что ссылки new_instance.my_list
не будут удалены, но я беспокоюсь, что весь экземпляр класса останется в памяти.
Я бы подумал, что, поскольку сам объект больше не имеет ссылки, объект будет удален, и останется только list
, но я не знаю, как я могу проверить эту теорию, чтобы убедиться, что я не надену нет утечки памяти.