我刚遇到这个问题,在 Google 的首页上找不到合理的答案。它类似于 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
答案 0 :(得分:4)
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
类。
我们真正需要的是 datetime.date()
constructor。