我在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公司
你回电话的方式是正确的。在
注意,调用
obj_app.hndlr(a,b)
与调用app_class.hndlr( obj_app, a, b)
完全相同,这就是内部发生的情况。在您可能需要阅读PEP 8以获得一些代码样式指南。类应该是CamelCase,并且应该在函数和类之间留一条空白线
相关问题 更多 >
编程相关推荐