My package has an optional C extension. Here's an abbreviated version of
what I have:
try:
from pysistence._persistent_list import PList as BasePList
except ImportError:
class BasePList(object):
__slots__ = ['_first', '_rest']
def __init__(self, first, rest=None):
self._first = first
self._rest = rest
def cons(self, item):
return self.__class__(item, self)
class PList(BasePList):
...
def __iter__(self):
....
...
So what I'm basically doing is subclassing a base class (which is defined in
Python or C) and adding an __iter__ method. This works fine if I don't use
the C extension, but if I do use it I get the following error:
Traceback (most recent call last):
File
"/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/timeit.py",
line 297, in main
x = t.timeit(number)
File
"/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/timeit.py",
line 193, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 11, in inner
for i in iter(datalist):
TypeError: 'pysistence.persistent_list.PList' object is not iterable
Is there a way to define the __iter__ method in Python, or am I going to
have to do that in C?