【发布时间】:2016-06-25 05:54:50
【问题描述】:
我正在通过元类方法修改一个使用单例模式的遗留库。
继承自 type 的 Singleton 类定义了 de __call__ 函数。
现在,我使用这个库的单例对象永远不会被删除。我在单例类中定义了__del__ 方法,并且从未调用过该函数。
澄清:我已经实现了一个名为Singleton 的(元)类,它被多个类使用,使用Singleton 作为__metaclass__。
例如,我有class A(object),它有__metaclass__ = Singleton。 A 类有几个成员,当我的程序结束并且 A 对象(唯一可以存在的对象)被销毁时,我希望这些成员被销毁。
我尝试在A 类中定义__del__ 方法,但它不起作用。
【问题讨论】:
-
这可能有助于理解为什么你需要销毁一个单例。你只有一个。 (对吧?你说的好像你有多个单例,这令人困惑。)如果你只有一个,那么需要销毁它是不寻常的。
-
你是对的。我正在编辑我的问题
-
@senderle,在某些测试场景中,创建一个可以自行清理的夹具是有益的,而在生产中只有该对象的单个实例才有意义,并且通常不需要清理。
标签: python singleton destructor metaclass