@classmethod引入的cls是什么类型

What's the type of cls introduced by @classmethod

我有一个简单的 class C 和一个 @classmethod 和一个数据 class DC:

@dataclass
class DC:
    c_class: ???

class C:
    @classmethod
    def hello(cls) -> DC:
        return DC(cls)

cls 的类型是什么?我需要在 @dataclass DC 中将其声明为 c_class 的一部分,因此我还需要指定它的确切类型。

感谢所有对问题发表评论的人。

答案确实是:

@dataclass
class DC:
    c_class: Type['C']  # or Type[C], if C is already defined

我验证了,mypyPyCharm喜欢它并且PyCharm 甚至根据需要检测 c_class 可用的正确 class 成员。我正在构建一个强类型的软件,解决这个问题的评论和提示很受欢迎。