要注释作为类的对象,请使用
typing.Type。例如,这将告诉类型检查器
some_class是类
Foo或其任何子类:
from typing import Typeclass Foo: ...class Bar(Foo): ...class Baz: ...some_class: Type[Foo]some_class = Foo # oksome_class = Bar # oksome_class = Baz # errorsome_class = Foo() # error
请注意,
Type[Union[Foo, Bar, Baz]]和
Union[Type[Foo], Type[Bar], Type[Baz]]完全等效。
如果
some_class可以是多个类中的任何一个,则可能需要使它们全部继承自相同的基类,并使用
Type[baseClass]。请注意,目前该继承必须是非虚拟的(正在讨论对虚拟继承的mypy支持)。
编辑以确认
Type[Union[...允许。



