__getitem__ method on (meta)classes
Ron Garret
rNOSPAMon at flownet.com
Tue Mar 15 11:36:46 EST 2005
In article <Sf6dneCcy-DEGavfRVn-iw at comcast.com>,
Steven Bethard <steven.bethard at gmail.com> wrote:
> 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
Yeah, except I actually left out one thing: I also want type(v)==e1.
rg
More information about the Python-list
mailing list