1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用cls: type.
就像每個(gè)整數(shù)都是 的實(shí)例一樣int,每個(gè)類都是 的實(shí)例type。
演示:
>>> class Foo: pass
>>>
>>> isinstance(Foo, type)
>>> True
>>> isinstance(Foo(), type)
>>> False
您還可以Type從typing模塊中使用,根據(jù)文檔,它是
可用于注釋類對(duì)象的特殊構(gòu)造。
使用typing.Type比cls:type.
例如,如果您想暗示參數(shù)可以是任何類對(duì)象,您只需使用cls:Type.
如果參數(shù)應(yīng)該是作為類Foo(或Foo本身)的子類的任何類對(duì)象,您可以編寫cls: Type[Foo].
回應(yīng)評(píng)論:
就像在你的例子中一樣。類對(duì)象是類型的實(shí)例,但類實(shí)例不是。所以這就是它抱怨的原因:去
func(Person)
是好的,但func(Person('Steve', 22))
不是。
在第二種情況下,你在做什么,你明確表示你不想做的事情:傳遞一個(gè)實(shí)例的Person
,而不是類Person
。因此,如果您添加了注釋type
或Type
.
添加回答
舉報(bào)