Konnte keine endgültige Antwort finden. Ich möchte einen Typhinweis für eine Funktion machen, wobei der Typ eine benutzerdefinierte Klasse ist, die ich definiert habe und die als CustomClass()
bezeichnet wird.
Und dann sagen wir mal in irgendeiner Funktion, nenne es FuncA(arg)
, ich habe ein Argument mit dem Namen arg
. Wäre die richtige Art, hint FuncA
einzugeben:
def FuncA(arg: CustomClass):
Oder wäre es:
def FuncA(Arg:Type[CustomClass]):
?
Der erstere ist korrekt , wenn arg
eine Instanz von CustomClass
akzeptiert :
def FuncA(arg: CustomClass):
# ^ instance of CustomClass
Falls Sie die Klasse CustomClass
selbst (oder einen Subtyp) wollen, sollten Sie schreiben:
from typing import Type # you have to import Type
def FuncA(arg: Type[CustomClass]):
# ^ CustomClass (class object) itself
So wie es in der Dokumentation geschrieben steht über Tippen :
class typing.Type(Generic[CT_co])
Eine mit
C
kommentierte Variable akzeptiert möglicherweise einen Wert vom TypC
. Im Gegensatz dazu akzeptiert eine Variable , die mitType[C]
Kommentiert ist, möglicherweise Werte, die selbst Klassen sind . Insbesondere akzeptiert sie die Klassenobjekt vonC
.
Die Dokumentation enthält ein Beispiel mit der Klasse int
:
a = 3 # Has type 'int' b = int # Has type 'Type[int]' c = type(a) # Also has type 'Type[int]'