当我这样做时
reactor.callLater(5, my_func, self)
传递给my_func的对象不是我称之为callLater的自我。它们具有不同的地址(通过print(self)和print(my_arg)验证)。
我在这里缺少什么?有办法吗? my_func,并将(classObj) 看到发送的实际实例?
我的目的是建立一个延迟检查,以确定自己的某个属性是否已经设定。我可以用不同的方式做事(实际上已经有了),但有关情况的事情并没有说得对,所以我想我会为将来的应用做些澄清。
答案 0 :(得分:0)
确实有些东西闻不对劲。以下代码按预期工作,传入的变量具有相同的地址。
from twisted.internet import reactor
def verify(obj):
""" Check whether the value variable has been set or not.
"""
if obj.value:
print('Value was set')
else:
print('Value was not set')
def compare(A, B):
""" Compare obj A == B
"""
if A == B:
print('Objects are the same')
else:
print('Objects are not the same')
class txClass:
value = None
def verify(self):
reactor.callLater(5, verify, self)
def compare(self, obj):
reactor.callLater(5, compare, self, obj)
A = txClass()
A.verify() # verify obj.value is set
A.value = 'test'
B = txClass()
A.compare(A) # compare same obj
A.compare(B) # compare diff obj
reactor.run()