簡體   English   中英

有人可以解釋一下這個錯誤到底是什么意思,TypeError: issubclass() arg 1 must be a class

[英]Can someone explain what exactly this error means,TypeError: issubclass() arg 1 must be a class

我對為什么會收到此錯誤一無所知。

正如人們所說, issubclass()的 2 個參數應該是類,而不是對象的實例。

考慮這個樣本:

>>> issubclass( 1, int )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: issubclass() arg 1 must be a class
>>> issubclass( type(1), int )
True    
>>> isinstance( 1, int )
True

關鍵是使用type()函數來獲取與issubclass()函數一起使用的實例的類型,如另一條評論中所述,這等效於調用isinstance()

這意味着您沒有提供類作為issubclass()參數。 兩個參數都必須是類。 第二個參數也可以是一個類元組。

如果您顯示引發此錯誤的代碼,我們可以進一步提供幫助。


文檔

issubclass(類,類信息)
如果classclassinfo的子類(直接或間接),則返回true 一個類被認為是它自己的一個子類。 classinfo可能是一個類對象的元組,在這種情況下,將檢查classinfo每個條目。 在任何其他情況下,都會TypeError異常。

issubclass()的第一個參數需要是“class”類型。

http://pyref.infogami.com/issubclass

基本上這個方法會告訴你第一個參數是否是第二個參數的子類。 因此,很自然地,您的兩個參數都必須是類。 從您的調用看來,您調用了不帶任何參數的issubclass ,這使解釋器感到困惑。

調用issubclass就像問解釋器:“嘿!這個類是另一個類的子類嗎?”。 但是,由於您沒有提供兩個類,您實際上是在問解釋器:“嘿!我不會向您展示任何東西,但請告訴我這是否是一個子類”。 這會使解釋器感到困惑,這就是您收到此錯誤的原因。

當您使用 "=" 而不是 ":" 聲明類的屬性時,您會收到錯誤: TypeError: issubclass() arg 1 must be a class 數字 1 表示您在第一個參數中有錯誤

class AnyClass(BaseClass):
    email = str

class AnyClass(BaseClass):
    email : str

對於那些使用PydanticFastAPI並遇到此錯誤問題的人。 這是答案https://stackoverflow.com/a/70384637/7335848

暫無
暫無

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

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