正好采用1个参数(给定0)

时间:2013-03-18 03:26:38

标签: python twisted

我有以下代码。我试图使用tick函数在扭曲的套接字中进行倒计时。它告诉我tick()只需要1个参数(给定0)。我该怎么办?

感谢。

expire = 10

class Socket(Protocol):
    def tick(self):
        global expire

        expire -= 1
        if expire == 0:
            print "Expired"
        else:
            reactor.callLater(1, self.tick)

    def connectionMade(self):
        #self.transport.write("""connected""")
        self.factory.clients.append(self)
        print "Clients are ", self.factory.clients

        if len(self.factory.clients) == 1:
            reactor.callLater(0, self.tick)

回溯:

Traceback (most recent call last):
  File "/Users/Alec/Desktop/server.py", line 163, in <module>
    class Socket(Protocol):
  File "/Users/Alec/Desktop/server.py", line 171, in Socket
    reactor.callLater(1, self.tick)
NameError: name 'self' is not defined

2 个答案:

答案 0 :(得分:1)

根据您帖子的标题和原始代码,我认为问题出在您的tick方法中。您需要更改它,以便传入self.tick,而不仅仅是tick

def tick(self):
    global expire

    expire -= 1
    if expire == 0:
        print "Expired"
    else:
        reactor.callLater(1, self.tick) # change here

通过使用self.tick,您传入一个绑定函数,因此已包含隐式self参数。所以实际上,它是一个不需要参数的函数。如果没有它,您将传入需要参数的未绑定tick函数。

答案 1 :(得分:0)

运行后

python -tt file.py

事实证明我有空白问题,如果过期== 0:是。