@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
我验证了,mypy和PyCharm喜欢它并且PyCharm 甚至根据需要检测 c_class
可用的正确 class 成员。我正在构建一个强类型的软件,解决这个问题的评论和提示很受欢迎。
我有一个简单的 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
我验证了,mypy和PyCharm喜欢它并且PyCharm 甚至根据需要检测 c_class
可用的正确 class 成员。我正在构建一个强类型的软件,解决这个问题的评论和提示很受欢迎。