9

私はもう試した

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を返すはずだということです。どうしたの?

4

2 に答える 2

15

からdatetime継承するためdate、のすべてのインスタンスdatetimeインスタンスですdate。つまり、インスタンスを使用するdatetime場所ならどこでもインスタンスを使用できdateます。これは、オブジェクト指向プログラミングの中心的な概念です。

dateチェックを変更して目的の操作を行うには、を使用して具体的にテストできますtype(now) is datetime.date。または、で明示的に除外することもできdatetimeますisinstance(now, datetime.date) and not isinstance(now, datetime.datetime)

于 2013-03-27T08:33:06.573 に答える
0

以下に示すように、どちらのアプローチも使用できます。

任意のランダムな日付を使用して、日付と日時のインスタンスを比較できます。

一方通行:

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
于 2021-07-15T22:47:56.570 に答える