程序第一次打印过期。我期待的代码打印“未过期”至少4次之前打印过期。有人能解释一下原因并帮我改正代码吗。谢谢
import time
TIMEOUT = 5
class Timer ():
def __init__(self):
self.timeout = time.time()+TIMEOUT
def isExpired ():
return time.time() > self.timeout
timing = Timer()
def main():
while 1:
if timing.isExpired:
print "Expired"
return
else:
print "Not expired"
print "sleeping for 1 second"
time.sleep(1)
if __name__== "__main__":
main()
您每次都在创建一个
Timer
实例。把它从循环中拿走,否则你的while循环永远不会终止。此外,还需要调用timing.isExpired
,因为它是一个方法。所以你的代码应该是:您有几个问题:
你没有给你的
isExpired
方法一个自我论证。将其定义为def isExpired(self):
。您正在每个循环迭代中创建一个新的计时器实例。将
timing = Timer()
移出while循环。timing.isExpired
是对方法对象iself的引用(在布尔上下文中总是true)。你需要做timing.isExpired()
才能真正调用它。这些都是与
Timer
无关的基本Python问题。阅读the Python tutorial学习如何使用类等等。你知道吗相关问题 更多 >
编程相关推荐