考虑以下非常简单的迭代器示例:
<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自动识别正确的类型吗?