George Sakkis wrote:
On Oct 22, 12:13 pm, netimen <[EMAIL PROTECTED]> 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. I have the following: 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)You have to wrap it as an (unbound) instance method explicitly:
Nope. As the error message says, the method was called with nothing provided to be bound to the extraneous parameter obj_self. Either provide an arg, such as with f.meth(1), *or* delete obj_self and 'Obj' is printed, with both 2.5 and 3.0.
-- http://mail.python.org/mailman/listinfo/python-list
