在python中与Timer对象斗争

时间:2011-04-10 00:12:31

标签: python multithreading timer

再次,我正在努力解决一些问题,尽管与我上一篇文章中的二进制数组不同,它可能更容易修复。基本上,我创建了一个带有函数名称的计时器对象。然而,我一直遇到问题,因为它说我调用的函数没有在Name Error下定义。

class DrawBot():
    waitingt = Timer(30.0, lockmap)
    ...
    def onlockmap(self, user):
        self.onBackup(user, "lockmapbackup")
        waitingt.start()

    def lockmap():
        onrestoremap("lockmapbackup")


NameError: name 'lockmap' is not defined

2 个答案:

答案 0 :(得分:2)

因为直到达到实际定义才定义它。另外,您可能不希望在每个类的实例中共享一个计时器...请尝试这样:

class DrawBot():
    def __init__(self):
        self.waitingt = Timer(30.0, self.lockmap)
    ...
    def onlockmap(self, user):
        self.onBackup(user, "lockmapbackup")
        self.waitingt.start()

    def lockmap(self):
        onrestoremap("lockmapbackup")

答案 1 :(得分:1)

lockmap()DrawBot()的一部分,因此,如果您单独调用它,则会获得NameError

尝试使用引用self

class来调用它
waitingt = Timer(30.0, self.lockmap)