获取名称错误:在Python中使用Twisted时未定义名称Self。如何删除此错误?

时间:2012-05-29 00:53:26

标签: python

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是一个全局变量,每次调用提及注释器时都不会重新初始化。因此,我做了这样的事情。但是这个“自我”错误没有定义。任何线索如何解决这个问题?

1 个答案:

答案 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=...完全没问题)