回答:
前者は正しいならば、arg
受け入れのインスタンスをCustomClass
:
def FuncA(arg: CustomClass):
# ^ instance of CustomClass
場合は、あなたがしたいクラスCustomClass
自体(またはサブタイプ)を、あなたは書く必要があります。
from typing import Type # you have to import Type
def FuncA(arg: Type[CustomClass]):
# ^ CustomClass (class object) itself
それはタイピングに関するドキュメントに書かれているように:
class typing.Type(Generic[CT_co])
注釈が付けられた変数
C
は、typeの値を受け入れる場合がありますC
。対照的に、アノテーションが付けられType[C]
た変数は、それ自体がクラスである値を受け入れる場合があります。具体的には、のクラスオブジェクトをC
受け入れます。
ドキュメントには、int
クラスの例が含まれています。
a = 3 # Has type 'int' b = int # Has type 'Type[int]' c = type(a) # Also has type 'Type[int]'
def foo(bar: 'Qux')
することと等価であるdef foo(bar: Qux)
ことがすぐにタイプをロードする必要がないことを除いて。
Type
py3.6以降から?ただNameError
。