Mohit Bhatt wrote: > Hello, > > I just started out with python( couple of weeks). > > I have a query regarding Operator Overloading > > class c1: > def __init__(self,value): > self.data = value > def __add__ (self,operand2): > self.data += operand2 > > obj1 = c1(1) > obj1 + 10 # this works just fine
it modifies obj1, so I'm not sure I agree that it works fine. but sure, it doesn't raise an exception. > 10 + obj1 # throws exception > > Exception Details > > Traceback (most recent call last): > File "<pyshell#38>", line 1, in -toplevel- > 10+ obj1 > > TypeError: unsupported operand type(s) for +: 'int' and 'instance' > > Q. What do I have to do to make the following line work? > > 10 + obj1 define "work". if you want it to modify obj1 (and thus confuse the heck out of anyone trying to use your class), implement __radd__. if you want to create a sane accumulator, I recommend implementing += assignment instead, by overloading __iadd__ instead of __add__. </F> -- http://mail.python.org/mailman/listinfo/python-list