我如何在Python类型注释中引用“任何将父类子类化的对象”?
示例:FooBase
是抽象基类,从中继承Foo1
,Foo2
等。我希望函数接受FooBase
的任何后代。请问这样做:
def do_something(self, bar:FooBase):
pass
还是只接受
FooBase
类的对象,鉴于FooBase
是抽象的,这当然是不可能的吗?在那种情况下,我是否需要为所有情况建立一个Union
(请上帝保佑我不要!),或者我可以通过其他方式抽象地表达这种关系吗? 最佳答案
继承也适用于带注释的类型。作为Foo
子类型的FooBase
的任何实例也是FooBase
类型的有效对象。因此,您可以向函数传递FooBase
对象,也可以传递Foo
对象。
如果要将功能限制为仅FooBar
的子类,则可以查看Type[C]
构造:The type of class objects。
关于python - Python 3类型注释和子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41790843/