Python isinstance() 在 datetime.date 中返回错误
我正在尝试编译一段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