擅长:python、mysql、java
<p>在定义类之前,不能创建对类方法的引用。你必须把它移出类定义。然而,使用全局函数映射来决定运行什么是非常困难的。如果你描述了你想用它做什么,我们可能会建议一个更好的解决方案。</p>
<pre><code>class SomeClass(object):
@classmethod
def func1(cls, arg1):
print("Called func1({})".format(arg1))
@classmethod
def func2(cls, arg1):
print("Call func2({})".format(arg1))
@classmethod
def func3(cls, arg1):
for fnName,do in funcList.iteritems():
if do:
try:
cls.func_map[fnName](arg1)
except KeyError:
print("Don't know function '{}'".format(fnName))
# can't create function map until class has been created
SomeClass.func_map = {
'func1': SomeClass.func1,
'func2': SomeClass.func2
}
if __name__=='__main__':
funcList = {'func1':True, 'func2':False}
SomeClass.func3('Argumentus-Primus')
</code></pre>