我试图开发一个依赖于输入类型date或datetime的逻辑,为了实现这个目标,我将isinstance
与datetime.date
和datetime.datetime
一起使用,不幸的是,datetime.datetime
对象似乎被认为是datetime.date
的示例。
import datetime
date_obj = datetime.date.today()
datetime_obj = datetime.datetime.now()
type(date_obj)
# <class 'datetime.date'>
type(datetime_obj)
# <class 'datetime.datetime'>
isinstance(date_obj, datetime.date)
# True
isinstance(datetime_obj, datetime.date)
# True
isinstance(date_obj, datetime.datetime)
# False
isinstance(datetime_obj, datetime.date)
# True
我怀疑datetime.date
可能被认为是datetime.datetime
的子类,但事实并非如此:
issubclass(datetime.date, datetime.datetime)
# False
issubclass(datetime.datetime, datetime.date)
# True
判断一个对象是日期还是日期时间的Python方法是什么?
P.S.我检查了this related question,但这并没有解决我的问题。
2条答案
按热度按时间ca1c2owp1#
可以使用
type
检索对象的确切类型,并使用is
检查它是date
还是datetime
:注意type objects are unique,因此使用
is
比较它们是很好定义的。ui7jx7zq2#
您可以先检查较宽的类型,然后再检查其他类型:
因为每个datetime.date时间对象也是一个datetime.date对象,但反过来通常不成立。