类型提示中的子类

7 浏览
0 Comments

类型提示中的子类

我想要使用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:
        # 做一些操作
    elif cls == C:
        # 做其他操作

现在当输入以下代码时:

process_any_subclass_type_of_A(B)

我在PyCharm IDE中收到一个提示,内容是'期望类型为A,而得到的是Type[B]。'

如何更改类型提示以接受A的任何子类型?

根据PEP 484("表达式的类型是特定参数类型的子类型也被接受作为该参数。"),我理解我的解决方案(cls: A)应该可以工作?

0