string: __iter__()?

mrquantum mrquantum at holon.at
Wed Oct 4 13:45:03 EDT 2006


John Roth:
 
> The iter() builtin creates an iterator for any
> object that obeys the sequence protocol.
> Since strings obey the sequence protocol there
> is no real advantage to adding yet another
> protocol to an already very fat object.

Okay!

> This  does, however, mean that testing
> for the presence of __iter__ is incomplete;
> one also has to test for __getattr__ if the
> object doesn't have an __Iter__ method.

Should be __getitem__ and not __getattr__!?

> Depending on  your program logic, it
> may be easier to just use iter() and
> handle the exception if it fails.

Okay, I'll do it this way - except will then raise a TypeError, as I just
found in the docs!

> See PEP 234 for a discussion of the
> reasons for doing it this way.
> 

Thanks for pointing this out!

Chris

PS: Thanks to all posters in this thread for your illuminative comments!



More information about the Python-list mailing list