擅长:python、mysql、java
<p>a.正确拼写:<strong>不</strong></p>
<pre><code> def __iter(self):
</code></pre>
<p>但是:</p>
<pre><code> def __iter__(self):
</code></pre>
<p>在<code>__</code>之前和<code>iter</code>之后。</p>
<p>b.使身体正确:<strong>不</strong></p>
<pre><code>return 33
</code></pre>
<p>但是:</p>
<pre><code>yield 33
</code></pre>
<p>或者
返回iter([33])</p>
<p>如果从<code>__iter__</code>返回值<code>return</code>,则返回一个迭代器(与<code>return [33]</code>中一样,<em>iterable</em>几乎与<code>return [33]</code>中的一样好,但不完全……);或者,<code>yield</code>1+值,使<code>__iter__</code>成为一个生成器函数(因此它本质上返回一个生成器迭代器)。</p>
<p>c.说对了:<strong>不</strong></p>
<pre><code>a().itervalues()
</code></pre>
<p>但是,例如:</p>
<pre><code>for x in a(): print x
</code></pre>
<p>或者</p>
<pre><code>print list(a())
</code></pre>
<p><code>itervalues</code>是dict的一种方法,与<code>__iter__</code>无关。</p>
<p>如果你把三个都修好了(!)错误,代码工作得更好;-)。</p>