Hi Here's a simple class example I've defined
############################# class myInt(int): def __add__(self,other): return 0 print 5 + myInt(4) #prints 9 print myInt(4) + 5 #prints 0 ############################# The Python binary operation function (binary_op1() in Objects/abstract.c) states the rules for binary operations as follows: v w Action ------------------------------------------------------------------- new new w.op(v,w)[*], v.op(v,w), w.op(v,w) new old v.op(v,w), coerce(v,w), v.op(v,w) old new w.op(v,w), coerce(v,w), v.op(v,w) old old coerce(v,w), v.op(v,w) [*] only when v->ob_type != w->ob_type && w->ob_type is a subclass of v->ob_type It seems that my example should fall in case 1, and in both cases, the __add__ function of the subclass should be used, returning 0, regardless of operand order. However, in one case the subclass's function is used and not in the other case. What am I missing here? Thanks Raj -- http://mail.python.org/mailman/listinfo/python-list