I am writing a c type extension for Python deriving from the list class (using PyList_Type.tp_init). I have the need to overload the + operator (To add two numbers stored as binary lists instead of concatenation). I have tried the following:
static PyMethodDef BinaryList_methods[] = { ... {"__add__", (PyCFunction)BinaryList___add__, METH_VARARGS, PyDoc_STR("__add__(self,other) -> BinaryList")}, ... {NULL, NULL}, }; This the BinaryList___add__ function is called if I use the __add__ explicitly but the list base class __add__ is called for the + operator, for example: a = BinaryList([1,0,0,0]) b = BinaryList([0,0,0,1]) print a.__add__(b) #prints [1,0,0,1] print a + b #prints [1,0,0,0,0,0,0,1] I read this: object.h -- Added tp_call member to the typeobject struct This along with a minor change to the ceval.c allows overloading of the function call operator for any class. Can anyone either tell me what I am doing wrong and or give me an example of how to properly overload an operator in a c coded extension? _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor