__getitem__ method on (meta)classes

Steven Bethard steven.bethard at gmail.com
Tue Mar 15 01:44:46 EST 2005


Ron Garret wrote:
> What I'm really trying to do is to create enumerated types such that if:
> 
> e1 = enum(lst) and v = e1(x)
> 
> then
> 
> (x in lst) and (e1[v] == x)

Use a class with __call__ and __getitem__:

py> class enum(object):
...     def __init__(self, vals):
...         self.vals = vals
...     def __call__(self, val):
...         return self.vals.index(val)
...     def __getitem__(self, index):
...         return self.vals[index]
...
py> lst = 'abcd'
py> x = 'b'
py> e1 = enum(lst)
py> v = e1(x)
py> (x in lst) and (e1[v] == x)
True

STeVe



More information about the Python-list mailing list