[EMAIL PROTECTED] (Bengt Richter) writes: > On Wed, 06 Jul 2005 17:57:42 +0200, Thomas Heller <[EMAIL PROTECTED]> wrote: > >>I'm trying to implement __iter__ on an abstract base class while I don't >>know whether subclasses support that or not.
> Will a property or custom descriptor do what you want? E.g. > > >>> class Base(object): > ... def __getIter(self): > ... if hasattr(self, "Iterator"): > ... return self.Iterator > ... raise AttributeError, name > ... __iter__ = property(__getIter) > ... > >>> class Concrete(Base): > ... def Iterator(self): > ... yield 1 > ... yield 2 > ... yield 3 > ... > >>> iter(Base()) > Traceback (most recent call last): > File "<stdin>", line 1, in ? > TypeError: iteration over non-sequence > >>> iter(Concrete()) > <generator object at 0x02EF152C> > >>> list(iter(Concrete())) > [1, 2, 3] Yep, that's exactly what I need - thanks. Thomas -- http://mail.python.org/mailman/listinfo/python-list