擅长:python、mysql、java
<p>如果您只想迭代序列,只需实现返回iterable的<code>__iter__</code>方法。最简单的方法是使用<code>yield</code>语句创建一个生成器。在</p>
<pre><code>class MySequence(object):
def __iter__(self):
yield 1
yield 2
yield 3
for x in MySequence():
print x # prints 1, then 2, then 3
</code></pre>
<p>但是,这不会启用<code>MySequence()[1]</code>之类的功能。为此,您需要实现<code>__getitem__</code>方法,并且可能还应该实现<code>__len__</code>。在</p>
^{pr2}$
<p>注意,我省略了<code>__iter__</code>。只要<code>__getitem__</code>在试图获得一个超出边界的值时引发一个<code>IndexError</code>,Python就可以使用它进行迭代。(如果我想更清楚,或者想要非标准的迭代行为,我仍然可以包括<code>__iter__</code>)</p>