簡體   English   中英

當類是相同的時,isinstance返回false?

[英]isinstance returning false when class is the same?

def addError(self, e):
    if not isinstance(e, Error):
        raise ValueError('{0} is not type {0}'.format(e, Error))
    self.__errors.append(e)

信息:

ValueError: <class 'api.utils.Error'>不是類型<class 'api.utils.Error'>

你正在傳遞類本身 ,而不是類的實例。 這解釋了你的問題。

>>> class A:
    pass

>>> isinstance(A, A)
False

你可能想要的是檢查一個實例:

>>> isinstance(A(), A)
True

e是類api.utils.Error ,而不是類的實例。 您可能想要構造一個實例。

此外,您的格式字符串有一個錯誤:

'{0} is not type {0}'

這忽略了format的第二個參數,並將第一個參數用於兩個占位符。 您最有可能意味着以下內容:

'{0} is not type {1}'

或者在Python 2.7上,

'{} is not type {}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM