Overloading __getitem__

2008-05-22 Thread Andreas Matthias
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
--
http://mail.python.org/mailman/listinfo/python-list


Re: Overloading __getitem__

2008-05-22 Thread Andreas Matthias
[EMAIL PROTECTED] wrote:

> actually i ddin't think about the fact that you're overloading dict, which 
> can already take multiple values in getitem

Oh, I didn't know that. I totally misinterpreted the error message.


> so how about
> 
> class crazy: pass
> 
> and then in your dict class:
> 
> def __getitem__(*args):

Apparently, args already is a tuple, so this should be:

  def __getitem__(self, args):

Is this documented somewhere? I couldn't find it anywhere.

Thanks.


Ciao
Andreas
--
http://mail.python.org/mailman/listinfo/python-list