Python isinstance() 在 datetime.date 中返回错误

16 投票
3 回答
33489 浏览
提问于 2025-04-16 15:44

我正在尝试编译一段2008年的旧代码

import datetime

if isinstance(value, datetime.date):

但是我遇到了一个错误:

isinstance()的第二个参数必须是一个类、类型,或者是类和类型的元组。 Python可执行文件: /usr/bin/python2.6 Python版本: 2.6.5

我缺少了什么呢?

3 个回答

6

我正在使用Python 2.7,有时也会遇到这个错误。如果你不需要严格的实例检查,通常只要检查一下类型就可以了。

if id(type) and type(value) in (datetime.datetime, datetime.date):
   #somecode
11

为了更清楚地说明这一点,你需要注意一下,datetime可能是指从import datetime导入的模块,也可能是指从from datetime import datetime导入的datetime类,因为这两者都有一个date属性。

在第一种情况下,datetime.date是指日期类,你可以用isinstance来检查它:

import datetime
type(datetime.date)
Out[13]: type

在第二种情况下,datetime.date是指datetime类的日期方法,这个方法不能用isinstance来检查,所以会出现错误。

from datetime import datetime
type(datetime.date)
Out[15]: method_descriptor

为了避免这种错误,最好明确地导入并使用日期类,方法是用from datetime import date,然后用isinstance(value, date)来检查。

23

我怀疑你导入的日期时间模块不对,像这样:

from datetime import datetime

应该用这个:

import datetime

撰写回答