【发布时间】:2018-02-15 22:35:38
【问题描述】:
我想允许使用 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 提示“预期类型 A,得到类型 [B]。”
如何在此处更改类型提示以接受 A 的任何子类型?
根据PEP 484(“该参数也接受其类型是特定参数类型的子类型的表达式。”),我知道我的解决方案(cls: A) 应该可以工作?
【问题讨论】:
-
Python 是否也会引发此错误?否则,它可能是 PyCharm 中的一个错误!
-
对我来说,我在 python 控制台上尝试过,它工作正常。可能是 PyCharm 中的错误..
-
是的,它正在工作,据我所知,类型提示是可选的。我仍然希望该方法的用户明确知道哪些类打算在那里使用。
标签: python subclass type-hinting python-typing