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是一个全局变量,每次调用提及注释器时都不会重新初始化。因此,我做了这样的事情。但是这个“自我”错误没有定义。任何线索如何解决这个问题?
答案 0 :(得分: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
可以被赋予要传递给函数的参数(在这种情况下,传递Namespace对象self
)。然后在函数内部," self"被修改(只要你不在函数内部执行类似self=...
的操作,你就是金色的 - self.attribute=...
完全没问题)