Conditionally implementing __iter__ in new style classes
harold fellermann
harold.fellermann at upf.edu
Wed Jul 6 12:17:25 EDT 2005
> I'm trying to implement __iter__ on an abstract base class while I
> don't
> know whether subclasses support that or not.
> Hope that makes sense, if not, this code should be clearer:
>
> class Base:
> def __getattr__(self, name):
> if name == "__iter__" and hasattr(self, "Iterator"):
> return self.Iterator
> raise AttributeError, name
>
> class Concrete(Base):
> def Iterator(self):
> yield 1
> yield 2
> yield 3
I don't know how to achieve it, but why don't you simply use
class Base:
pass
class Concrete(Base):
def __iter__(self) :
yield 1
yield 2
yield 3
What is the advantage to have a baseclass that essentially does
some method renaming __iter__ ==> Iterator?
- harold -
--
Always remember that you are unique;
just like everyone else.
--
More information about the Python-list
mailing list