[Python-3000] Builtin iterator type

Mike Orr sluggoster at gmail.com
Mon Nov 20 02:04:41 CET 2006


On 11/19/06, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Andrew Koenig wrote:
>
> > That's a nice general sentiment, but not always feasible -- especially if
> > you're writing library code.
>
> I've written a fair bit of library code, and I've never
> found a pressing need to test for an abstract interface.
>
> In the rare cases where I've used type testing in an
> API, it's always been for specific well-known concrete
> types, such as strings and tuples -- never anything so
> abstract as "iterator", "sequence", etc.

Sometimes people don't realize how much they'd use a feature until it
exists.  I never thought I'd use generators until I started using
them, and then it's "Wow, this is neat!"  There have been several
cases like this with Python.

Another way people often test for sequence-ness:
    isinstance(obj, (list, tuple))
    isinstance(obj, (list, tuple, UserList))
Here one buldes up all the likely classes.  That's fine but we left
out str because you have to stop somewhere.  Usually I forego UserList
because that depends on a module that may not be used, and often I
forego tuple to make it shorter: "isinstance(obj, list)".  That's fine
but it's more restrictive than I want to me: my function *could* work
with a tuple or list-like object too.

Equality for tuples!  Down with sequence discrimination!  Support interfaces! :)

-- 
Mike Orr <sluggoster at gmail.com>


More information about the Python-3000 mailing list