Python属性错误:'str'对象没有'asctime'属性
我正在用Python制作一个闹钟,但我的代码好像有问题。你能帮我看看吗?
import time
from time import localtime
from time import asctime
from time import sleep
import datetime
def Checktime():
global time
time = time.asctime(time.localtime(time.time()))
return time
while True:
Checktime()
print(time[11:-5])
sleep(2)
print("Done")
我在Idle3中遇到的错误是:
16:40:18
Done
Traceback (most recent call last):
File "C:\Python34\time test.py", line 14, in <module>
Checktime()
File "C:\Python34\time test.py", line 10, in Checktime
time = time.asctime(time.localtime(time.time()))
AttributeError: 'str' object has no attribute 'asctime'
1 个回答
2
第一次你执行
time = time.asctime(time.localtime(time.time()))
时,全球的名字 time
被绑定到了一个模块上。所以当你调用 asctime()
方法时,它会返回一个字符串,这个字符串又被绑定到了全球的名字 time
上。
下次你执行
time = time.asctime(time.localtime(time.time()))
时,全球的名字 time
就变成了一个字符串。
你应该重新考虑一下用 time
来表示两种不同的东西。建议你完全不要使用 global
。一般来说,尽量避免这样做。这个函数已经返回了一个值,这样就足够了。
代码可以这样写:
import time
import datetime
def Checktime():
return time.asctime(time.localtime(time.time()))
while True:
asctime = Checktime()
print(asctime[11:-5])
sleep(2)
print("Done")
顺便说一下,CheckTime()
这个名字对函数来说有点弱。一个以 get
开头的名字会显得更有信息量。