__eq__ problem with subclasses
D'Arcy J.M. Cain
darcy at druid.net
Sat Aug 23 09:06:54 EDT 2008
On Fri, 22 Aug 2008 14:37:06 -0600
"Daniel Israel" <dmi1 at hushmail.com> 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 <darcy at druid.net> | 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.
More information about the Python-list
mailing list