year = datetime.year
不给你当前年份。它给你一种无拘无束的描述符对象 https://docs.python.org/3/howto/descriptor.html相反(getset_descriptor
在你的错误中):
>>> datetime.year
<attribute 'year' of 'datetime.date' objects>
>>> type(datetime.year)
<class 'getset_descriptor'>
>>> datetime.year - 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'getset_descriptor' and 'int'
不要太担心这里对象的确切类型,这只是创建内置不可变类型的实例所需的实现细节,例如datetime
工作。这只是意味着你没有instance of the datetime
类型,所以没有year
该实例的值。
如果您想要当前年份,请使用datetime.now().year
:
year = datetime.now().year
datetime.now() https://docs.python.org/3/library/datetime.html#datetime.datetime.now给你一个datetime
instance,代表当前时间和日期。该实例有一个有效的year
属性。
你也可以使用datetime.date.today() https://docs.python.org/3/library/datetime.html#datetime.date.today当然:
>>> from datetime import datetime, date
>>> datetime.now()
datetime.datetime(2016, 12, 31, 14, 58, 14, 994030)
>>> datetime.now().year
2016
>>> date.today().year
2016