我有以下代码:
class SomeClass:
@classmethod
def func1(cls,arg1):
#---Do Something---
@classmethod
def func2(cls,arg1):
#---Do Something---
# A 'function map' that has function name as its keys and the above function
# objects as values
func_map={'func1':func1,'func2':func2}
@classmethod
def func3(cls,arg1):
# following is a dict(created by reading a config file) that
# contains func names as keys and boolean as values that tells
# the program whether or not to run that function
global funcList
for func in funcList:
if funcList[func]==True:
cls.func_map[func](arg1) #TROUBLING PART!!!
if _name__='main'
SomeClass.func3('Argumentus-Primus')
运行此命令时,我不断收到错误消息:
异常TypeError:“'classmethod'对象不可调用”
我无法弄清楚这是怎么回事,不胜感激。
在定义了类之前,您无法创建对类方法的引用。您必须将其移出类定义。但是,使用全局函数映射来确定要执行的操作确实很尴尬。如果您描述了您要对此进行的操作,我们可能会建议一个更好的解决方案。
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')
本文向大家介绍JavaScript代码编写中各种各样的坑和填坑方法,包括了JavaScript代码编写中各种各样的坑和填坑方法的使用技巧和注意事项,需要的朋友参考一下 坑”这个字,在此的意思是“陷阱”。由于 JavaScript “弱语言”的性质,使得其在使用过程中异常的宽松灵活,但也极为容易“中招”。这些坑往往隐藏着,所以必须擦亮双眼,才能在学习与应用 JS 的道路上走的一帆风顺。 一、全局变量
本文向大家介绍调试Python程序代码的几种方法总结,包括了调试Python程序代码的几种方法总结的使用技巧和注意事项,需要的朋友参考一下 程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。 第一种方法
本文向大家介绍Selenium中Select类下可用的各种方法有哪些?,包括了Selenium中Select类下可用的各种方法有哪些?的使用技巧和注意事项,需要的朋友参考一下 下面列出了Selenium中Select类下可用的各种方法- selectByVisibleText(字符串参数) 此方法是下拉菜单中最常用的方法。使用此方法在下拉菜单和多重选择框中选择一个选项非常简单。它使用String参
本文向大家介绍iOS App中调用iPhone各种感应器的方法总结,包括了iOS App中调用iPhone各种感应器的方法总结的使用技巧和注意事项,需要的朋友参考一下 CoreMotion框架的使用 CoreMotion框架十分强大,它不仅将加速度传感器和螺旋仪传感器进行了统一配置和管理,还为我们封装了许多算法,我们可以直接获取到设备的运动状态信息。 1、CoreMotion负责处理的数据 Cor
我用的是阿拉莫菲尔4。当我这样做的时候 我在控制台里有这样的东西: 我感兴趣的是一条特别的路线: 如何获取此代码以便正确处理错误。我尝试了所有我能编出来的组合,但是在任何地方都没有这个代码的痕迹。
问题内容: 我正在编写Android应用程序,此处的最佳方法通常可能与Java相同或不同。 我只是希望能够设置一个调试标志,该标志仅在设置为true时才执行代码的某些部分–等同于C ++设置预处理器#define DEBUG并使用#ifdef DEBUG。 在Java中是否有公认的或最佳的方法来完成此任务? 现在,我只是要在Application对象中设置一个变量,但是我不认为这是最好的方法。 问