class 引用的类型提示是什么?

What is the type hint for a class reference?

我正在查看 PEP 484,但找不到有关如何键入提示 class 参考的说明。 class 引用是否如下所示声明为 Callable?

from typing import Callable

class SomeClass:
    def __init__(self):
        self.s = 'Hello'

    def display(self):
        print(self.s)

x: Callable[[], SomeClass] = SomeClass

instance = x()
instance.display()

如果您只关心 xa class,您只需使用 type(或其他一些合适的元 class).

x: type = SomeClass

如果 x 应该是 SomeClass 或其后代之一,请使用 typing.Type

x: typing.Type[SomeClass] = SomeClass

如果 x 必须 恰好 SomeClass(无论出于何种原因),我认为 typing.TypeVar 是合适的选择。

x: typing.TypeVar('SomeClass', SomeClass) = SomeClass