我正在使用一个对象__del__()来取消订阅事件(使用类似于此的事件方案):
import my_enviroment
class MyClass():
def __del__(self):
my_environment.events.my_event -= self.event_handler_func
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我在程序运行结束时收到以下错误:
Exception AttributeError: "'NoneType' object has no attribute 'events'" in <bound method MyClass.__del__ of <myclass.MyClass instance at 0x04C54580>> ignored
Run Code Online (Sandbox Code Playgroud)
怎么可能这样?!my_environment是我导入的模块,怎么可能是None?(events是一个带有事件挂钩的全局对象,例如my_event)
[...]该
__del__()方法引用的其他全局变量可能已被删除或正在被拆除(例如导入机器关闭).因此,__del__()方法应该做到维持外部不变量所需的绝对最小值.
换句话说,当__del__你的对象调用该方法时,my_enviroment可能已被python"删除",因此它可以是None ...
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |