私はもう試した
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
私が期待したのは、最初のisinstanceがFalseを返すはずだということです。どうしたの?
からdatetime
継承するためdate
、のすべてのインスタンスdatetime
ものインスタンスですdate
。つまり、インスタンスを使用するdatetime
場所ならどこでもインスタンスを使用できdate
ます。これは、オブジェクト指向プログラミングの中心的な概念です。
date
チェックを変更して目的の操作を行うには、を使用して具体的にテストできますtype(now) is datetime.date
。または、で明示的に除外することもできdatetime
ますisinstance(now, datetime.date) and not isinstance(now, datetime.datetime)
。
以下に示すように、どちらのアプローチも使用できます。
任意のランダムな日付を使用して、日付と日時のインスタンスを比較できます。
一方通行:
a = datetime.date(2021,12,30)
x = datetime.datetime(2020, 5, 17)
print(isinstance(a,type(datetime.date(2021,12,30)))) #True
print(isinstance(a,type(datetime.datetime(2021,12,30)))) #False
第二の方法
a = datetime.date(2021,12,30)
x = datetime.datetime(2020, 5, 17)
print(isinstance(a, a.__class__)) # True
print(isinstance(a, x.__class__)) # False