richcmpfunc semantics
Greg Ewing
greg at cosc.canterbury.ac.nz
Thu Apr 7 06:36:25 EDT 2005
harold fellermann wrote:
>
> richcmpfunc compare(PyObject *,PyObject, int);
>
> I supposed the two objects passed are the ones to be compared.
Yes.
> What is the meaning of the integer argument? Does it specify the kind
> of comparision operator (e.g. __eq__ or __le__), and if so, how?
< 0
<= 1
== 2
!= 3
> 4
>= 5
> What is my richcmpfunc supposed to return? 0 or 1 indicating False or
> True?
In the usual case, yes, although it can return any
Python object. Rich comparison doesn't impose any
semantics on the operations -- this is one of the
reasons for its existence.
> What has to be done, if the function is invoked for an operator
> I don't want to define?
Return Py_NotImplemented. (Note that's return, *not* raise.)
> Maybe there is some good documentation available, but I cannot find it.
I found most of this out by reading the source, I think.
--
Greg Ewing, Computer Science Dept,
University of Canterbury,
Christchurch, New Zealand
http://www.cosc.canterbury.ac.nz/~greg
More information about the Python-list
mailing list