web-dev-qa-db-ja.com

ユーザー定義クラスを使用したタイプヒント

決定的な答えを見つけることができなかったようです。関数の型ヒントを実行したいのですが、その型はCustomClass()と呼ばれる定義済みのカスタムクラスです。

そして、ある関数でFuncA(arg)と呼びましょう。argという名前の引数が1つあります。ヒントFuncAを入力する正しい方法は次のとおりです。

def FuncA(arg: CustomClass):

または次のようになります:

def FuncA(Arg:Type[CustomClass]):

54
hhprogram

former is correctargCustomClassのインスタンスを受け入れる場合:

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

Typing に関するドキュメントに書かれているように:

class typing.Type(Generic[CT_co])

Cアノテーションが付けられた変数は、タイプCの値を受け入れる場合があります。対照的に、変数Type[C]アノテーションが付いたクラスは、それ自体がクラスである値を受け入れる場合があります-具体的には、Cのクラスオブジェクトを受け入れます。

ドキュメントには、intクラスの例が含まれています。

a = 3         # Has type 'int'
b = int       # Has type 'Type[int]'
c = type(a)   # Also has type 'Type[int]'
70