Thanks for all who replied to this question about replacing a method. I feel a little sheepish for not having caught that I have to replace it in the class, not the instance, but I have found a very similar problem trying to replace a method using a function defined in pyrex. I post all of the code below, but there are several files.
The main code is: import module_py # import a function from a python module import module_pyrex # import a function from a pyrex extension module class This(object): def update1(self,val): print val def update2(self,val): print "2",val def update3(self,val): print "3",val def local_update(obj,val): print "local",val This.update1=local_update # replace the method from a local function This.update2=module_py.python_update # replace the method from a python module This.update3=module_pyrex.pyrex_update # replace the method from a pyrex module t=This() t.update1('local') # works fine t.update2('python') # works fine t.update3('pyrex') # gives a typeerror function takes exactly 2 arguments (1 given) #--------------------------------------------------------------------------------- #module_py.py def python_update(self,val): print "python module",val #--------------------------------------------------------------------------------- #module_pyrex.pyx def pyrex_update(self,val): print "pyrex module",val #--------------------------------------------------------------------------------- any ideas why the pyrex function fails? thanks, bb -- ----------------- [EMAIL PROTECTED] http://web.bryant.edu/~bblais -- http://mail.python.org/mailman/listinfo/python-list