Overloading __getitem__
inhahe
inhahe at gmail.com
Thu May 22 19:02:24 EDT 2008
actually i ddin't think about the fact that you're overloading dict, which
can already take multiple values in getitem
so how about
class crazy: pass
and then in your dict class:
def __getitem__(*args):
if args[-1] is crazy:
return self.get(args[:-1])*5
else:
return self.get(args)
and then
print foo[1,2] #not crazy
print foo[1,2,crazy] #crazy
I *think* that would work
"Andreas Matthias" <amat at kabsi.at> wrote in message
news:uf6hg5-ca9.ln1 at buckbeak.hogwarts...
> The following code doesn't run but I hope you get what I
> am trying to do.
>
>
> class my_dict (dict):
>
> def __getitem__ (self, key, crazy = False):
> if crazy == True:
> return 5 * self.get(key)
> else:
> return self.get(key)
>
>
> foo = my_dict()
> foo['a'] = 123
>
> print foo['a']
> print foo['a', crazy = True]
>
>
> Is it somehow possible to overload __getitem__ with an additional
> argument? Are there other possibilities to achiev this? Or is
> the only solution to this to write a normal function call
> `def my_get (self, key, crazy=False)'?
>
>
> Ciao
> Andreas
More information about the Python-list
mailing list