PyCharm:如何记录:rtype:用于返回生成器的函数

时间:2017-06-08 07:45:16

标签: python pycharm generator docstring

我尝试记录:rtype: docstring参数,返回Node的生成器:

def __iter__(self):
    """iterate over node children

    :rtype: ???
    """
    for node in self.children.itervalues():
        yield node

:rtype:应该是什么? generator of Node似乎无法运作。

1 个答案:

答案 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

enter image description here

但是如果您更喜欢设置__iter__方法的返回类型,可以使用下一种语法来完成:

def __iter__(self):
    """
    :rtype: collections.Iterable[Node]
    """
    for node in self.children.itervalues():
        yield node

我更喜欢第一种解决方案。