如何在对象/方法对中使用回调函数

克劳斯

我有一个简单的方法,该方法接受一个函数以供稍后调用:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Codeigniter中使用回调函数

如何在 JavaScript 的其他函数中使用回调?

如何在ReactJS Hooks中使用回调函数

如何在 angular 4 中使用回调函数?

如何在phantomjs中使用回调

如何在beantalkd中使用回调?

如何在JavaScript中使用回调函数设置函数执行顺序?

在函数回调中使用回调

使用FileReader时如何在打字稿中使用回调函数?角度5

如何在对象实例中使用构造函数的私有方法

如何使用 JavaScript/jQuery 在类中使用回调函数

如何在 mysql 查询的 module.export 函数中使用回调 - nodejs,express

如何在JestJS中使用回调参数模拟函数

如何在节点js中使用回调函数返回API响应

如何在angucomplete-alt选定对象属性上使用回调函数?

如何在函数内部使用回调函数?

在 JavaScript 中使用回调函数的替代方法?

如何结束在Matlab中使用回调的函数?

setTimeout如何在对象删除后仍然调用回调

如何在暂停的协程流中使用回调?

React Hook:如何在setState中使用回调

如何在 React 组件的 render() 中使用回调

如何在C#中使用DLL Import和Get事件调用回调方法C ++

如何在Haskell中调用使用回调的C函数?

在 Cassandra 中使用回调函数

在Google Geocode中使用回调函数

像我在C#中一样,如何在Java中使用回调函数调用函数?

如何模拟采用回调对象和调用者的方法,使用回调来委托结果

如何在对象构造函数中使用 Map 数组函数