netimen wrote:
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.

Yes you can and did.

class Foo(object):
    pass

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

def func(self):
    print 'func'

f = Foo()
Foo.meth = func
f.meth() # all goes OK
Foo.meth = Obj()
f.meth() # I get TypeError: __call__() takes exactly 2 arguments (1
given)

So either remove the unused obj_self parameter from __call__ or pass something -- anything -- to be bound to it.
f.meth(1) for instance, works fime (in 3.0 at least)

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

Reply via email to