我正在用Python2.6.2编写一个包含查找表的类。大多数情况都很简单,表中包含数据。有些情况比较复杂,我希望能够调用函数。但是,我在引用函数时遇到了一些问题。
下面是一些示例代码:class a:
lut = [1,
3,
17,
[12,34],
5]
其中lut是静态的,并且预期也是常量。
现在我要做的是:class a:
def spam0(self):
return (some_calculation_based_on_self)
def spam1(self):
return (a_different_calculation_based_on_self)
lut = [1,
3,
17,
[12,34],
5,
self.spam0
self.spam1]
这不会编译,因为self.spam0和self.spam1未定义。我试过使用a.spam,但也没有定义。如何设置lut[5]以返回对self.spam的引用?
编辑:我计划这样做:
(继续定义class a):
进口检验# continue to somewhere in the definition of class a
def __init__(self, param):
self.param = param
def eggs(self):
tmp = lut[param]
if (insect.isfunction(tmp)): # if tmp is self.spam()
return tmp() # should call it here
return tmp
所以我要么返回一个简单的值,要么运行一些额外的代码,这取决于参数。
编辑:lut不必是类属性,但是方法spam0和spam1确实需要访问类成员,因此它们必须属于类。
我不确定这是最好的办法。我还在想办法。