擅长:python、mysql、java
<p>我认为有两件重要的事情要解决。</p>
<p>首先,您的<code>DoublyLinkedList</code>类没有<code>__iter__</code>方法。您可能希望创建一个返回<code>ListIterator</code>实例的实例。也许您试图手动执行此操作,但这是正常的方法。</p>
<p>其次,需要修复<code>ListIterator</code>中的代码才能正常工作。当前,<code>__init__</code>方法无法正确初始化,并且<code>next</code>方法尝试访问不存在的成员变量,如<code>size</code>。</p>
<p>下面是一个我认为可行的实现:</p>
<pre><code>def ListIterator(object):
def __init__(self, node):
self.current = node
def __iter__(self):
return self
def next(self):
if self.current is None:
raise StopIteration()
result = self.current.data
self.current = self.current.next
return result
class DoublyLinkedList(object):
# all your current stuff, plus:
def __iter__(self):
return ListIterator(self.head)
</code></pre>
<p>另外,在当前代码中,您定义的类没有基。这在Python 3中是可以的(默认情况下,<code>object</code>将是基础),但在Python 2中,这将导致获得一个“旧样式”类。旧样式的类已被弃用,您将发现某些语言功能无法正常使用它们(尽管据我所知,迭代中没有任何功能)。另一方面,如果已经在使用Python 3,则需要在迭代器类中定义一个<code>__next__</code>方法,而不是<code>next</code>(不带下划线)。</p>