在Python中调用另一个类的回调
我刚开始学习Python,看到了一些相关的问题。我的需求是,我的一个类需要调用另一个类的成员,并传递一个回调函数。另一个类的方法会在稍后的时间调用这个回调函数。我写了一段示例代码,运行起来似乎没问题。但是,我不太确定这样做是否正确,特别是我调用回调函数的方式。当回调函数被调用时,我希望能获取到它的上下文。在下面的代码中,打印出来的值似乎是匹配的。如果有什么问题或者更好的实现方式,我会很感激你的反馈。以下是示例代码,内容不多。
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)
非常感谢。
1 个回答
0
你这样使用回调函数是对的。
注意,调用 obj_app.hndlr(a,b)
和调用 app_class.hndlr( obj_app, a, b)
是完全一样的——这就是内部发生的事情。
你可能想看看 PEP 8,里面有一些代码风格的指导。类名应该使用大驼峰命名法(CamelCase),而且在函数和类之间应该留一个空行。