Website hosting service by

 Back to Index

2.2.4 Object Comparison

    cmpfunc tp_compare;

The tp_compare handler is called when comparisons are needed and the object does not implement the specific rich comparison method which matches the requested comparison. (It is always used if defined and the PyObject_Compare() or PyObject_Cmp() functions are used, or if cmp() is used from Python.) It is analogous to the __cmp__() method. This function should return -1 if obj1 is less than obj2, 0 if they are equal, and 1 if obj1 is greater than obj2. (It was previously allowed to return arbitrary negative or positive integers for less than and greater than, respectively; as of Python 2.2, this is no longer allowed. In the future, other return values may be assigned a different meaning.)

A tp_compare handler may raise an exception. In this case it should return a negative value. The caller has to test for the exception using PyErr_Occurred().

Here is a sample implementation:

static int
newdatatype_compare(newdatatypeobject * obj1, newdatatypeobject * obj2)
    long result;
    if (obj1->obj_UnderlyingDatatypePtr->size <
        obj2->obj_UnderlyingDatatypePtr->size) {
        result = -1;
    else if (obj1->obj_UnderlyingDatatypePtr->size >
             obj2->obj_UnderlyingDatatypePtr->size) {
        result = 1;
    else {
        result = 0;
    return result;



2002-2004 Web Hosting Service


Disclaimer: This documentation is provided only for the benefits of our hosting customers.
For authoritative source of the documentation, please refer to


Domain registration - Domain registration, register domain or transfer domain name from only $5.95/yr

Cheap domain registration -
Register domain name and
domain transfer from $7.95/year only