把当前类作为返回types注释

在python 3我可以使参数和返回types注释。 例:

class Graph: def __init__(self, V: int, E: int, edges: list): pass @classmethod def fromfile(cls, readobj: type(sys.stdin)): pass def V(self) -> int: pass def E(self) -> int: pass 

问题是我不能使用当前类(Graph)的返回types做一个注释,这个类还没有定义。 例:

 class Graph: def reverse(self) -> Graph: pass 

此代码与错误

 def reverse(self) -> Graph: NameError: name 'Graph' is not defined 

这些注释对于logging和允许IDE识别参数和返回types非常有用=>启用自动完成

UPD:所以我发现这是要么是不可能的,或者需要一些我不喜欢的黑客,所以我决定只使用def reverse (self) -> 'Graph':这对于文档来说是可以理解的,虽然违反了规则。 缺点是它不适用于IDE自动完成。

所以现在过了一段时间,我可以说,我所做的决定是使用-> 'Graph'而不是-> Graph 。 它不会使我的IDE(PyCharm)能够以这种方式识别types,但是对于文档目的来说,它足够好。

我可以使用的另一个可能的解决scheme是在运行时更改注释,但是这不能解决文档的问题 – 您不希望在源中间的某处查找types声明。

问题的根源在于类实际定义之前识别类对象。 这在Python中根本不可能做到。