PyCharm不识别迭代器和枚举器返回类型

时间:2017-01-08 12:21:27

标签: iterator pycharm enumerate type-hinting

考虑以下非常简单的迭代器示例:

<div class="fb-like" data-href="http://zoekeenleven.be" data-layout="box_count" data-action="like" data-size="large" data-show-faces="true" data-share="true"></div>

class A(object):
    def __init__(self, n):
        self.list = [0] * n

    def __iter__(self):
        return AIter(self)

在PyCharm编辑器中输入时,在定义class AIter(object): def __init__(self, a): """ Args: a(A): """ self.obj = a self.n = len(a.list) self.i = 0 def __next__(self): if self.i == self.n: raise StopIteration else: self.i += 1 return self.obj.list[self.i-1] 后,a=A(5)确实完成了int的功能。 但是,当使用类似a.list[0].的东西时,我无法让PyCharm理解j是一个int。它知道for j in a:返回一个int,它知道AIter.next()返回A.__iter__()

这可以通过在for之后写AIter来解决, 但这似乎是一种解决方法,每次我打电话给或列举时我都要记得这样做。 我可以让PyCharm自动识别正确的类型吗?

1 个答案:

答案 0 :(得分:1)

自2017年2月15日起修复。最新的EAP可用here