Аналог деструктора для 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, для такого варианта при завершении программы выполнять определенный код, как для деструктора или для такой реализации похожее не сделать?


Ответы (0 шт):