如何在 Python 类型注释中引用“任何子类化父类的对象”?
例子:FooBase
是一个抽象基类,其中Foo1
, Foo2
等被子类化。我希望该函数接受任何后代FooBase
。这会吗:
def do_something(self, bar:FooBase):
pass
或者这只会接受类的对象FooBase
,这当然是不可能的,因为FooBase
是抽象的吗?在这种情况下,我需要建立一个Union
所有情况下(上帝保佑,我希望不要!),或者我可以通过其他方式抽象地表达这种关系吗?
继承也适用于带注释的类型。任何实例Foo
这是一个子类型FooBase
也是该类型的有效对象FooBase
。所以你可以通过FooBase
对象同时也是一个Foo
函数的对象。
如果您想将功能限制为仅子类 of FooBar
,你可以看一下Type[C]
构造:类对象的类型 https://www.python.org/dev/peps/pep-0484/#the-type-of-class-objects.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)