在Python类型注释中,如何引用“任何子类化父类的对象”?
例如:FooBase
是一个抽象基类,Foo1
、Foo2
等都是其子类。我希望该函数能接受FooBase
的任何后代。下面这样写是否正确:
def do_something(self, bar:FooBase):
pass
或者它只接受FooBase
类的对象,但是这是不可能的,因为FooBase
是抽象的?那么,我需要构建所有情况的Union
(请神明,希望不用这样做!),还是可以通过其他方式抽象地表示这种关系?
pytorchvision
的VisionDataset
。我将这个类继承到了几个子类A
、B
和C
中。如果我测试typing.Union[A, B, C, BaseClass]
,那么这四个类都会出现。这很奇怪。 编辑:我的错,我使用了类构造函数。所以我的类型是type
。 - MaKaNu