我有一个简单的方法,该方法接受一个函数以供稍后调用:
def SimpleFunc(parm1):
print(parm1)
class CallMe:
def __init__(self, func):
self.func = func
def Call(self, parm):
self.func(parm)
caller = CallMe(SimpleFunc)
caller.Call("Hallo")
很好!
但是我想使用一个类方法,并想在已定义对象上调用该方法作为回调:
class WithClassMethod:
def __init__( self, val ):
self.val = val
def Func(self, parm):
print( "WithClass: ", self.val, parm )
obj = WithClassMethod(1)
caller = CallMe( ??? )
caller.Call("Next")
如何将对象/方法对绑定到可调用对象?
注意:的代码不受CallMe
我的控制。它来自需要处理程序功能的Web服务器。
您可以简单地将方法对象传递给类:
called = CallMe(obj.Func)
扩展一下,实例方法实际上只是原始的类函数:
>>> obj.Func.__func__
<function __main__.WithClassMethod.Func>
在访问实例(obj.Func
)时,通过__get__
将self
(实例)附加到实例的描述符()进行转换:
>>> obj.Func.__self__
<__main__.WithClassMethod at 0x7fbe740ce588>
因此,您几乎可以对方法和函数进行任何操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句