我刚刚遇到这个问题,在谷歌的首页上找不到合理的答案。它类似于 this question asked in 2011 ,但对于较新版本的 Python,这会导致不同的错误消息。
是什么导致这些TypeError
?
整数
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()
is a method在 datetime.datetime
object .我们混淆了 datetime
带有 datetime.datetime
的模块类(class)。我们真正要找的是
datetime.date()
constructor .
关于python - 类型错误 : descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'int' object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66431493/