python 日期时间实例检查日期 returns 真
python datetime instance check with date returns true
我有 2 个对象,一个是日期时间对象,另一个是日期对象。当我想使用 isinstance(python 的首选方式)检查对象的类型时,我得到了一些荒谬的结果
>>> from datetime import date, datetime
>>> a=date.today()
>>> b=datetime.now()
>>> isinstance(a, date)
True
>>> isinstance(a, datetime)
False
>>> isinstance(b, date)
True # this should be False
>>> isinstance(b, datetime)
True
为什么 datetime 对象实例检查日期是否返回 true?目前我正在使用 type
来解决这个问题,但这不是解决方法吗?
>>> type(a) == date
True
>>> type(a) == datetime
False
>>> type(b) == date
False
>>> type(b) == datetime
True
Why datetime object instance check with date returning true
没有解决方法,它按预期工作,因为 datetime
是 date
的子类,而 isinstance returns True
是子类,因为文档说。我认为使用 type()
是您在这里的唯一方法。
>>> from datetime import datetime, date
>>> datetime.__mro__
(datetime.datetime, datetime.date, object)
>>> issubclass(datetime, date)
True
datetime
class 是 date
的子class。
Python 库创建了这种继承关系,因此您可以在需要 date
的地方使用 datetime
。这样做的理由是 datetime
对象中包含一个日期。如果您忽略时间或使用固定时间(例如午夜),那么将其用作 date
对象是有意义的。
documentation 提到了 class 层级:
Subclass relationships:
object
timedelta
tzinfo
timezone
time
date
datetime
我有 2 个对象,一个是日期时间对象,另一个是日期对象。当我想使用 isinstance(python 的首选方式)检查对象的类型时,我得到了一些荒谬的结果
>>> from datetime import date, datetime
>>> a=date.today()
>>> b=datetime.now()
>>> isinstance(a, date)
True
>>> isinstance(a, datetime)
False
>>> isinstance(b, date)
True # this should be False
>>> isinstance(b, datetime)
True
为什么 datetime 对象实例检查日期是否返回 true?目前我正在使用 type
来解决这个问题,但这不是解决方法吗?
>>> type(a) == date
True
>>> type(a) == datetime
False
>>> type(b) == date
False
>>> type(b) == datetime
True
Why datetime object instance check with date returning true
没有解决方法,它按预期工作,因为 datetime
是 date
的子类,而 isinstance returns True
是子类,因为文档说。我认为使用 type()
是您在这里的唯一方法。
>>> from datetime import datetime, date
>>> datetime.__mro__
(datetime.datetime, datetime.date, object)
>>> issubclass(datetime, date)
True
datetime
class 是 date
的子class。
Python 库创建了这种继承关系,因此您可以在需要 date
的地方使用 datetime
。这样做的理由是 datetime
对象中包含一个日期。如果您忽略时间或使用固定时间(例如午夜),那么将其用作 date
对象是有意义的。
documentation 提到了 class 层级:
Subclass relationships:
object timedelta tzinfo timezone time date datetime