擅长:python、mysql、java
<p>关于代码的一些事情:</p>
<ol>
<li><code>__iter</code>应该是<code>__iter__</code></li>
<li>在<code>__iter__</code>函数中返回“33”。实际上,您应该返回一个<em>迭代器对象</em>。迭代器是一个对象,当调用<code>next()</code>函数时,它会不断返回不同的值(可能是一系列值,如[0,1,2,3等])。</li>
</ol>
<p>下面是迭代器的一个工作示例:</p>
<pre><code>class a(object):
def __init__(self,x=10):
self.x = x
def __iter__(self):
return self
def next(self):
if self.x > 0:
self.x-=1
return self.x
else:
raise StopIteration
c=a()
for x in c:
print x
</code></pre>
<p>类<code>a</code>的任何对象都是迭代器对象。调用<code>__iter__</code>函数应该返回迭代器,因此它返回<strong>本身</strong>–如您所见,a类有一个<code>next()</code>函数,因此这是一个迭代器对象。</p>
<p>当调用下一个函数时,它将保持返回连续值,直到它达到零,然后发送<code>StopIteration</code>异常,该异常(适当地)将停止迭代。</p>
<p>如果这看起来有点模糊,我建议尝试使用代码,然后在这里查看文档:<a href="http://docs.python.org/library/stdtypes.html" rel="noreferrer">http://docs.python.org/library/stdtypes.html</a></p>