Python属性错误:'str'对象没有属性'asctime'

时间:2014-08-12 14:46:00

标签: python clock alarm

我正在尝试用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 个答案:

答案 0 :(得分:1)

第一次执行

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")

FWIW,CheckTime()是函数的弱名称。以get开头的名称似乎更具信息性。