136

特定のクラスのサブクラスを受け入れるために、Python 3 を使用した型ヒントを許可したいと考えています。例えば:

class A:
    pass

class B(A):
    pass

class C(A):
    pass

def process_any_subclass_type_of_A(cls: A):
    if cls == B:
        # do something
    elif cls == C:
        # do something else

次のコードを入力すると:

process_any_subclass_type_of_A(B)

PyCharm IDE のヒント「Expected type A, got Type[B] instead.」が表示されます。

ここでタイプヒントを変更して、A のサブタイプを受け入れるにはどうすればよいですか?

PEP 484 (「型が特定の引数型のサブタイプである式は、その引数にも受け入れられます。」) によると、私の解決策が機能するはずだと理解しています(cls: A)か?

4

1 に答える 1