类型错误:“datetime.datetime”对象的描述符“date”不适用于“int”对象
我刚刚遇到这个问题,在谷歌的首页上找不到合理的答案。它类似于2011 年提出的这个问题,但对于较新版本的 Python,会导致不同的错误消息。
是什么导致这些TypeErrors?
整数
import datetime
my_date = datetime.datetime.date(2021, 3, 2)
结果报错:
TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'int' object
字符串
同样,用字符串替换整数也会产生相同的错误:
import datetime
my_date = datetime.datetime.date("2021", "3", "2")
给出:
TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'str' object
列表
使用列表会产生相同的错误:
import datetime
my_date = datetime.datetime.date([2021, 3, 2])
结果是:
TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'list' object
同样,使用from datetime import datetime和datetime.date将分别导致以下错误消息:
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'int' object
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'str' object
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'list' object
回答
解决方案:
import datetime
my_date = datetime.date(2021, 3, 2)
或者
from datetime import date
my_date = date(2021, 3, 2)
为什么?
问题是这datetime.datetime.date()是一个datetime.datetime对象的方法。我们混淆了datetime模块和datetime.datetime类。
我们真正要找的是datetime.date()构造函数。
THE END
二维码