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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4