On Fri, 22 Aug 2008 14:37:06 -0600 "Daniel Israel" <[EMAIL PROTECTED]> wrote: > I am very confused by the following behavior. > > I have a base class which defines __eq__. I then have a subclass > which does not. When I evaluate the expression a==b, where a and b > are elements of these classes, __eq__ is always called with the > subclass as the first argument, regardless of the order I write my > expression. I can't see why this would be desired behavior.
I am sure that Python is doing some optimization based on the fact that "==", like "*" and "+" but unlike "/" and "-" are commutative. > Why does a1==a2 generate a call to c1.__eq__(a2, a1) instead of > c1.__eq__(a1, e2)? This is important because I am writing a math > library in which '==' is being used for assignment, i.e., 'a==b+c' > set 'a' equal to the sum of 'b' and 'c'. So 'a==b' is very > different from 'b==a'. But isn't that what "a = b + c" does? -- D'Arcy J.M. Cain <[EMAIL PROTECTED]> | Democracy is three wolves http://www.druid.net/darcy/ | and a sheep voting on +1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner. -- http://mail.python.org/mailman/listinfo/python-list