我有一个项目,尝试使用带回调函数的弱引用,但我不明白我做错了什么。我创建了一个简化的测试,展示了我困惑的确切行为。
为什么在这个测试中test_a按预期工作,但是self.MyCallbackB的弱引用在类初始化和调用test_b之间消失了呢?我原本认为只要实例(a)存在,对self.MyCallbackB的引用就应该存在,但实际上并没有。
import weakref
class A(object):
def __init__(self):
def MyCallbackA():
print 'MyCallbackA'
self.MyCallbackA = MyCallbackA
self._testA = weakref.proxy(self.MyCallbackA)
self._testB = weakref.proxy(self.MyCallbackB)
def MyCallbackB(self):
print 'MyCallbackB'
def test_a(self):
self._testA()
def test_b(self):
self._testB()
if __name__ == '__main__':
a = A()
a.test_a()
a.test_b()