【问题标题】:PyCharm doesn't recognize iterator and enumerator return typesPyCharm 无法识别迭代器和枚举器返回类型
【发布时间】:2017-05-22 19:20:26
【问题描述】:

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

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

    def __iter__(self):
        return AIter(self)

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]

在 PyCharm 编辑器中键入时,在定义 a=A(5) 之后,a.list[0]. 确实完成了 int 的功能。 但是,当使用 for j in a: 之类的东西时,我无法让 PyC​​harm 理解 j 是一个 int。它知道AIter.next() 返回一个int,它知道A.__iter__() 返回一个AIter

这可以通过在for后面写# type: int来解决, 但这似乎是一种解决方法,我必须记住每次调用 for 或枚举时都要这样做。 我可以让 PyC​​harm 自动识别正确的类型吗?

【问题讨论】:

标签: iterator pycharm enumerate type-hinting


【解决方案1】:

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

【讨论】:

  • 其实好像只对迭代器解决了,对枚举没有解决
猜你喜欢
  • 1970-01-01
  • 2018-07-15
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多