如何检查变量是否是datetime.datetime或datetime.date的实例

wai*_*kuo 1 python datetime

我试过了

In [16]: import datetime

In [17]: now = datetime.datetime.utcnow()

In [18]: isinstance(now, datetime.date)
Out[18]: True

In [19]: isinstance(now, datetime.datetime)
Out[19]: True
Run Code Online (Sandbox Code Playgroud)

我所期望的是第一个isinstance应该返回False.发生了什么?

use*_*342 7

由于datetime继承自date,每个实例datetime也是一个实例date,即您可以datetime在任何使用实例的地方使用date实例.这是面向对象编程的核心概念.

要修改检查以执行您想要的操作,您可以date使用专门测试type(now) is datetime.date.或者,您可以明确排除datetimeisinstance(now, datetime.date) and not isinstance(now, datetime.datetime).