Customize the effect of enumerate()?
Simon Forman
rogue_pedro at yahoo.com
Sun Oct 22 18:56:16 EDT 2006
Dustan wrote:
> Can I make enumerate(myObject) act differently?
>
> class A(object):
> def __getitem__(self, item):
> if item > 0:
> return self.sequence[item-1]
> elif item < 0:
> return self.sequence[item]
> elif item == 0:
> raise IndexError, "Index 0 is not valid."
> else:
> raise IndexError, "Invalid Index."
> def __iter__(self): return iter(self.sequence)
That final else clause is a little funny... What kind of indices are
you expecting that will be neither less than zero, greater than zero,
or equal to zero?
> Why the funny behavior, you ask? For my class A, it doesn't make sense
> to number everything the standard programming way. Of course, if
> someone uses enumerate, it's going to number the items the same way as
> ever. Is there any way to modify that behavior, any special function to
> set? There doesn't appear to be, according to the docs, but it never
> hurts to make sure.
You can write your own enumerate function and then bind that to the
name 'enumerate'.
More information about the Python-list
mailing list