![](/img/trans.png)
[英]In Python, why isinstance function says that a datetime is an instance of datetime.date?
[英]Python isinstance() returning error with datetime.date
我正在嘗試編譯舊的2008代碼 。
import datetime
if isinstance(value, datetime.date):
但是我收到了一個錯誤:
isinstance()arg 2必須是類和類型的類,類型或元組Python可執行文件:/usr/bin/python2.6 Python版本:2.6.5
我錯過了什么?
我懷疑你導入了錯誤的日期時間,如:
from datetime import datetime
改為使用:
import datetime
我正在運行Python 2.7,偶爾也會遇到此錯誤。 如果您不需要嚴格的實例檢查,通常只需檢查類型就足夠了。
if id(type) and type(value) in (datetime.datetime, datetime.date):
#somecode
為了更清楚地說明這一點,如果datetime
指的是import datetime
的模塊,或者datetime
類from datetime import datetime
,則必須小心,因為它們都有一個date
屬性。
在第一種情況下, datetime.date
引用可與isinstance
一起使用的日期類:
import datetime
type(datetime.date)
Out[13]: type
在第二種情況下, datetime.date
引用datetime類的date方法,該方法不能與isinstance
一起使用,因此也就是錯誤。
from datetime import datetime
type(datetime.date)
Out[15]: method_descriptor
為了幫助避免這樣的錯誤,最好使用from datetime import date
明確地導入和使用日期類from datetime import date
然后使用isinstance(value, date)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.