假设已经创建了一个抽象基类MembershipClass
。多个类派生自抽象基类,例如FirstClass
、SecondClass
等
我希望在函数中使用类型注释,该函数接受从MembershipClass
派生的任何类作为参数。如果有少量派生类(例如2个),则应该可以:
from typing import Union
def MyFunc(membership_obj: Union[FirstClass, SecondClass]) -> None:
...
有没有一种方法可以为membership_obj
创建一个类型提示,本质上说它的类型是从MembershipClass
派生的任何类,而不必在类型注释中指定每个可能的派生类
我看到了两种可能的解决办法:
from typing import TypeVar
BaseType = TypeVar('BaseType', bound=MembershipClass)
def MyFunc(membership_obj: BaseType) -> None:
...
def MyFunc(membership_obj: MembershipClass) -> None:
...
这两种方法都可以接受吗
看起来这两种解决方案都可以工作,尽管mypy消息略有不同。考虑下面的示例(我在内联中添加了MyPy错误):
尽管如此,我认为第二种方法更具可读性和直观性。我认为
TypeVar
更适合于generics(这并不是说如果你想的话就不应该使用它)相关问题 更多 >
编程相关推荐