在python3中,我可以使用参数和返回类型注释。示例:
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)的返回类型进行注释,它还没有定义。示例:
class Graph:
def reverse(self) -> Graph:
pass
这段代码会出错
def reverse(self) -> Graph:
NameError: name 'Graph' is not defined
这些批注对于记录和允许集成开发环境识别参数和返回类型=> enable autocomplete都非常有用
UPD:所以我想到的是,这要么是不可能的,要么需要一些我不喜欢的技巧,所以我决定只使用def reverse (self) -> 'Graph':
,它对于文档是可以理解的,尽管违反了规则。缺点是它不适用于IDE自动完成。
发布于 2013-07-09 05:04:52
所以,过了一段时间,我可以说我的决定是使用-> 'Graph'
而不是-> Graph
。它不能使我的集成开发环境(PyCharm)能够以这种方式识别类型,但对于文档目的来说,它工作得足够好了。
我可以使用的另一个可能的解决方案是在运行时更改注释,但这并不能解决文档的问题-你不会想要在源代码中间的某个地方寻找类型声明……
问题的根源在于在实际定义类之前识别类对象。这在python中是根本不可能做到的。
https://stackoverflow.com/questions/15853469
复制相似问题