在python中调用另一个类的回调

2024-05-23 23:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python方面处于初级水平。我回顾了这个话题中提出的一些类似的问题。 我的要求是我的类调用另一个类的成员传递它的回调函数。另一个类方法将在以后调用回调。我写了一个示例代码,这似乎很管用。但是,我不确定这是否是正确的方法,尤其是我调用CB函数的方式。当回调函数被调用时,我希望它的上下文可用。在下面的代码中,打印的值似乎匹配。 如果有什么不对劲或者更好的方法来达到同样的效果,我们会很感激你的回应。这是示例代码,不是那么大。在

class cb_class():
    def dp_prnt(self, cb_fn, temp_list, key_val):
        print "CB Class called %d" % key_val
        cb_fn(temp_list, 100) #IS this right??
class app_class():
    def __init__(self):
        self.ii = 8
    def hndlr(self, temp_list, key_val):
        self.key_val = key_val
        cb_class_obj = cb_class()
        cb_class_obj.dp_prnt(self.cb_hndlr, temp_list, key_val)
    def cb_hndlr(self, temp_list, key_val):
        print "CB Called %d"  %key_val
        phy = temp_list.get('phy')
        print "phy %s" % phy
        print "old VAL %d" % temp_list.get('old_val')
        print "ii is %d" % self.ii
        print "keyval is %d" % self.key_val
obj_app = app_class()
lst = {'phy': 'eth3', 'old_val': 23}
obj_app.hndlr(lst, 67)

非常感谢。 KP公司


Tags: 方法key函数selfobjappdefphy
1条回答
网友
1楼 · 发布于 2024-05-23 23:23:02

你回电话的方式是正确的。在

注意,调用obj_app.hndlr(a,b)与调用app_class.hndlr( obj_app, a, b)完全相同,这就是内部发生的情况。在

您可能需要阅读PEP 8以获得一些代码样式指南。类应该是CamelCase,并且应该在函数和类之间留一条空白线

相关问题 更多 >