我有以下代码。我试图使用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
答案 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:是。