Is 'everything' a refrence or isn't it?

Steven D'Aprano steve at REMOVETHIScyber.com.au
Sat Jan 14 19:19:31 EST 2006


On Sat, 14 Jan 2006 18:21:28 -0500, Mike Meyer wrote:

> Paul Rubin <http://phr.cx@NOSPAM.invalid> writes:
>> Mike Meyer <mwm at mired.org> writes:
>>> > Whether the '==' operation conforms to your idea of what equality
>>> > means is unclear.
>>> Care to say what it does mean, then?
>> I'd say a==b doesn't necessarily mean a and b have the same value.
> 
> Care to say what it does mean (as opposed to what it doesn't mean), then?

Since you can overload __eq__, it means anything the programmer wants it
to mean. And if there is a bug, something he doesn't mean.

But ignoring pathological cases, a==b means that a and b are equal,
whatever equal means in the context. Equal might mean that a and b:

- are the same object;
- are different objects with equal values;
- are different objects with equivalent values;
- have the same value when converted to a common type (which may or may
not be the type of either a or b);
- are "close enough" to treat as if they were the same;
- represent the same abstract quantity or quality;
- have the same printable representation;
- or something else!

But note that even if one or more of these are true, it doesn't
necessarily mean that a==b will return true. "two" and "deux" both
represent the same abstract quantity, but no programming language I know
of will recognise them as equal.

And then there is this potent source of bugs:

>>> distance_in_feet = 5
>>> weight_in_milligrams = 5
>>> distance_in_feet == weight_in_milligrams
True

Since when is a distance comparable to a weight, let alone equal?


-- 
Steven.




More information about the Python-list mailing list