特定のクラスのサブクラスを受け入れるために、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
次のコードを入力:私はPyCharm IDEのヒントを得る
process_any_subclass_type_of_A(B)
'タイプA期待を、代わりにタイプ[B]を得ました。'
ここでタイプヒントを変更して、Aのサブタイプを受け入れることはできますか?
これによると(https://www.python.org/dev/peps/pep-0484/#type-definition-syntax、 "タイプが特定の引数型のサブタイプである式もその引数で受け入れられます)"、私の解決策(cls: A)
はうまくいくはずですか?
このエラーはPythonでも発生していますか?さもなければ、PyCharmのバグかもしれません! – jpic
私のために私はpythonコンソールで試してみました。 PyCharmでバグが発生する可能性があります。 – Nirmi
はい、動作しています。タイプヒントは私が知る限りオプションです。それでも、私はメソッドのユーザに、そこでの使用を意図したクラスを明示的に知りたがっています。 – user1211030