Ниже мой код:Как удалить объект, созданный другим модулем?
from ab import Ab
class Xyz:
def __init__():
self.a = Ab.get_unique_instance()
Это как функция get_unique_instance()
определяется в ab.py
class Ab:
instance = []
def get_unique_instance():
if len(Ab.instance) == 0:
new_instance = Ab()
Ab.instance.append(new_instance)
return Ab.instance[0]
Это делается для того, только один экземпляр Ab является когда-либо. Проблема в том, что экземпляр Ab остается в памяти, даже когда объект, созданный из класса Xyz, выходит за рамки. Как удалить этот объект явно?
Если вы только когда-либо захотите, то почему 'Ab.instance' список? Вы могли бы использовать 'weakref' экземпляр, поэтому, когда все остальные ссылки на него выходят за рамки, он удаляется. – jonrsharpe
Вы можете сделать 'del self.a', но если вы можете предоставить, как вы тестируете' instace of Ab все еще в памяти', тогда мы можем дать лучший ответ. – Nilesh
Вы также можете посмотреть этот пост [http: // stackoverflow.com/q/6760685/1982962) для создания singleton в python –