Аналог деструктора для metaclass=Singleton
У меня есть Singleton класс
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class ConnectBase(BaseClass, metaclass=Singleton):
def get_conn_settings(self):
config = {
"connection_ti": True,
}
def __del__(self):
self.conn.close()
В данном случае del никогда не вызовется. Полагаю что метакласс не освобождается, поскольку он принадлежит модулю, который сам сохраняется sys.modules и эта ссылка не исчезнет к моменту завершения программы.
Как вместо del, для такого варианта при завершении программы выполнять определенный код, как для деструктора или для такой реализации похожее не сделать?