我尝试记录:rtype:
docstring参数,返回Node
的生成器:
def __iter__(self):
"""iterate over node children
:rtype: ???
"""
for node in self.children.itervalues():
yield node
:rtype:
应该是什么? generator of Node
似乎无法运作。
答案 0 :(得分:4)
如official文档中所述,您可以使用其下面的self.children
提示:type
的类型。这将允许您使用定义的类型在任何地方使用此变量。这是一个例子:
class Node(object):
def foo(self):
pass
class Iterator(object):
def __init__(self):
self.children = ''
""":type: dict[str, Node]""" # <<< define type of self.children after assigning the value
def __iter__(self):
for node in self.children.itervalues():
yield node
if __name__ == '__main__':
for node in Iterator():
node. # <<< type hinting will work here
但是如果您更喜欢设置__iter__
方法的返回类型,可以使用下一种语法来完成:
def __iter__(self):
"""
:rtype: collections.Iterable[Node]
"""
for node in self.children.itervalues():
yield node
我更喜欢第一种解决方案。