netimen a écrit :
Can I substitute a method of a class by a callable object (not a
function)? I can very easy insert my function in a class as a method,
but an object - can't.

functions implement the descriptor protocol so when looked up as class attributes, the lookup invoke their __get__ method, which in turn returns a method object (which is a thin wrapper around the function, the class and the instance).

You can either build the method manually (as Georges explained), or make your own Obj class a proper descriptor:

from types import MethodType

class Obj(object):
     __name__ = "Obj" # for Method.__repr_

    def __call__(self, obj_self):
        print 'Obj'

    def __get__(self, instance, cls):
        return MethodType(self, instance, cls)


HTH
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to