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

时间:2014-07-03 18:01:30

标签: python class callback

我在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

1 个答案:

答案 0 :(得分:0)

你做回调的方式是正确的。

请注意,调用obj_app.hndlr(a,b)与调用app_class.hndlr( obj_app, a, b)非常相似 - 这就是内部发生的事情。

您可能需要阅读PEP 8以获取几个代码样式指南。类应该是CamelCase,你应该在函数和类之间留一个空行