[Python-Dev] Comparison and (user) confusion (original) (raw)

Aahz aahz at pythoncraft.com
Mon Jul 12 15:49:52 CEST 2004


On Thu, Jul 01, 2004, François Pinard wrote:

The problem appeared when I sub-classed list', and used a cmp' method in my sub-type to effect a specialised sort. The sort did not behave as expected, as the list' type provides rich comparisons, and_ _that sort', finding _lt_', merely ignored my own cmp'. I wonder if Python could not have helped better here, by diagnosing a possible comparison confusion while creating the sub-class. I do not know much know Python internals, but if C slots happen to be used for comparison methods, it might not be so unreasonable to expect such confusion to be detected whenever those slots are filled. I presume here, maybe wrongly, that it does not make good sense mixing rich and non-rich comparisons in the same class. Just a thought. :-)

There is one good reason for implementing both cmp() and rich comparisons: when comparing is expensive, it makes sense to call cmp() directly if you need the full three-way compare to branch. (Decimal is a good example of this -- at least it was when I originally wrote it, and it probably still has the same need now.)

While your question also makes sense, I'd say it's the province of PyChecker rather than Python itself.

Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/

"Typing is cheap. Thinking is expensive." --Roy Smith, c.l.py



More information about the Python-Dev mailing list