我有一个类似于下面的类,对于我的简单用法很好。你知道吗
但是,以这种方式调用函数意味着它们没有访问self.
的权限,因此我不能使用任何其他成员函数或变量。请注意,有些项共享相同的回调。你知道吗
有没有更好的方法来引用或调用函数,以便我可以访问与self
相关的其他项?你知道吗
class Foo:
def dostuff(self, bar):
# ...
# Do stuff with input data, occasionally invoking the right callback
# function like so:
self.options[i]['func'](mydata)
def callback1(data):
pass
def callback2(data):
pass
options = [
0x10: { 'name': 'cat', 'func': callback1 },
0x20: { 'name': 'dog', 'func': callback2 },
0x40: { 'name': 'emu', 'func': callback2 },
0x80: { 'name': 'bat', 'func': callback2 }
]
由于您没有访问self的权限,因此需要推迟查找该方法。您可以在
dostuff
内按名称查找:您的成员函数需要包含一个“self”参数,即使它们只用于自调度调用。你知道吗
换句话说,你需要的是:
。。。它需要用
self.callback(some_data)
调用还要注意,您已经定义了太多了。选项作为类数据而不是成员属性。它不需要任何实例化就可以访问,但是您应该让那些阅读您的代码的人清楚地了解您的意图,方法是一致地将它们称为
Foo.options
,而不是some_instance.options
(后者可以工作,但是通过简单地使用它会模糊.options的本质) 误认为实例成员(属性)。你知道吗相关问题 更多 >
编程相关推荐