您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何注释属于类对象的类型(而不是类实例)?

如何注释属于类对象的类型(而不是类实例)?

要注释作为类的对象,请使用typing.Type。例如,这将告诉类型检查器some_class是类Foo或其任何子类:

from typing import Type
class Foo: ...
class Bar(Foo): ...
class Baz: ...
some_class: Type[Foo]
some_class = Foo # ok
some_class = Bar # ok
some_class = Baz # error
some_class = Foo() # error

请注意,Type[Union[Foo, Bar, Baz]]Union[Type[Foo], Type[Bar], Type[Baz]]完全等效。

如果some_class可以是多个类中的任何一个,则可能需要使它们全部继承自相同的基类,并使用Type[BaseClass]。请注意,目前该继承必须是非虚拟的(正在讨论对虚拟继承的mypy支持)。

编辑以确认Type[Union[...允许。

其他 2022/1/1 18:36:54 有518人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶