在python 3中,我可以设置参数并返回类型注释。例:
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
问题是我无法使用当前类(图形)的返回类型进行注释,该类型尚未定义。例:
class Graph: def reverse(self) -> Graph: pass
这段代码有错误
def reverse(self) -> Graph: NameError: name 'Graph' is not defined
这些注释对于记录文档以及允许IDE识别参数和返回类型都非常有用=>启用自动完成功能
UPD:所以我想到的是这是不可能的,或者需要一些我不喜欢的技巧,所以我决定使用def reverse (self) -> 'Graph': 可以理解的文档,尽管这违反了规则。缺点是它不适用于IDE自动完成功能。
def reverse (self) -> 'Graph':
所以现在过了一会儿,我可以说我做出的决定是使用-> 'Graph'而不是-> Graph。它不能使我的IDE(PyCharm)能够以这种方式识别类型,但对于文档目的它已经足够好了。
-> 'Graph'
-> Graph
我可以使用的另一种可能的解决方案是在运行时更改批注,但这不能解决文档问题-您将不想在源中间寻找类型声明…
问题的根源在于在实际定义类之前识别类对象。这在python中根本不可能做到。