To make @jonrsharpe's suggestion more specific, this is one way to implement __iter__, without having to add another iterator class. It also gives you the __str__ method for free.
def __iter__(self):
"""
Iterate over the linked list.
"""
current = self.head
while current is not None:
yield current.value
current = current.next
def __str__(self):
"""
Prints the current list in the form of a Python list
"""
return str(list(self))
Here is an example of its usage:
>>> l = LinkedList()
>>> l.insert(1)
>>> l.insert(2)
>>> for x in l:
... print x
...
2
1
>>> list(l)
[2, 1]
>>> print(l)
[2, 1]
Note that I used is not None instead of != None, read the answers herehere, if you want to know why.