On Tue, Sep 22, 2020 at 02:13:46PM +0300, Serhiy Storchaka wrote:
> 22.09.20 12:48, Steven D'Aprano пише:
> > Why does `object` define rich comparison dunders `__lt__` etc?

> Because object.__eq__ and object.__ne__ exist. If you define slot
> tp_richcompare in C, it is exposed as 6 methods __eq__, __ne__, __lt__,
> __le__, __gt__ and __ge__. It is not possible to determine that __lt__()
> always returns NotImplemented without running it.

Ah, thank you Serhiy, I thought it might be something like that.

Presumably back when rich comparisons were added, the choice would have 
been:

- add one tp_richcompare slot to support all six methods; or

- add six slots, one for each individual dunder

in which case the first option wastes much less space. Is that 
a reasonable understanding of the motive?



-- 
Steve
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/6HXL72CEF6GLDU5W2TC473NRT2KUQJSU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to