为什么datetime.minute是一个属性,而datetime.weekday()是一个函数?

时间:2017-01-12 15:53:33

标签: python

我在这里对问题添加了评论:I'm Trying to create an alarm clock but it gives back this - TypeError: 'int' object is not callable询问为什么以下内容无效:

while True:
    now = datetime.datetime.now()
    if now.weekday() == 5:
        if now.hour() == 10 and now.minute() == 30:
            webbrowser.open(url)
    elif now.hour() == 7 and now.minute == 0:
        webbrowser.open(url)
    time.sleep(1)

当我快速检查问题时,我刚刚测试了now.weekday()是否是一个函数。然后我继续发表评论说OP已经错过了now.minute上的括号,因此假设now.weekday()now.hour函数然后是now.minute和{{{{}}}而没有调用该函数。 1}}也是。

情况并非如此,而now.weekday()是一个函数,now.hournow.minute实际上是属性。

为什么会这样?为什么它们不是所有的功能/所有属性而不是两者的混合?

1 个答案:

答案 0 :(得分:3)

因为datetime对象是根据yearmonthdayhourminutesecond创建的,microsecondtzinfo值,而不是工作日。您无法在指定工作日的原始数字中创建此类对象。

因此,datetime对象的输入数字是属性。

工作日派生的值,根据核心信息计算,并通过使weekday方法明确要求计算它。