1
def mention_notifier(self):
    print self.stat_old


if __name__ == "__main__":
    import sys
    self.stat_old = Set([])
    l = task.LoopingCall(mention_notifier).start(timeout)

这是我的代码的基本框架。我希望 stat_old 是一个全局变量,每次调用mention_notifier 时都不会重新初始化。因此,我做了这样的事情。但是没有定义“自我”的这个错误。有什么线索可以解决这个问题吗?

4

1 回答 1

2

我不使用 Twisted,但通过查看docs,这样的事情可能会起作用:

def mention_notifier(self):
    print self.stat_old

class Namespace(object): 
    pass

if __name__ == "__main__":
    import sys
    self=Namespace()
    self.stat_old = Set([])
    l = task.LoopingCall(mention_notifier,self).start(timeout)

当然,这里的变量名self可能应该更改为其他名称——按照惯例self,通常在类内部使用,以在方法调用中引用类的实例......

看起来LoopingCall可以给定参数以传递给函数(在这种情况下,self传递了命名空间对象)。然后在函数内部,“self”被修改(只要你不在self=...函数内部做类似的事情,你就是金子——self.attribute=...完全没问题)

于 2012-05-29T01:19:12.867 回答