__getitem__ method on (meta)classes
Steven Bethard
steven.bethard at gmail.com
Wed Mar 16 03:20:51 EST 2005
Steven Bethard wrote:
>
> py> class enum(object):
> ... class item(object):
> ... def __init__(self, val):
> ... self.val = val
> ... def __repr__(self):
> ... return 'enum.item(%r)' % self.val
> ... def __init__(self, vals):
> ... self.items = [type(self).item(val) for val in vals]
> ... self._val_item_map = dict(zip(vals, self.items))
> ... self._index_item_map = dict(enumerate(self.items))
Sorry, this was before I decided I should save items as an instance
variable. Drop this map, it's unnecessary.
> ... def __call__(self, val):
> ... try:
> ... return self._val_item_map[val]
> ... except KeyError:
> ... raise TypeError("%s is not a valid %s" % (val, type(self)))
> ... def __getitem__(self, index):
> ... return self._index_item_map[index]
And replace this with self.items[index]
STeVe
More information about the Python-list
mailing list