python – 尝试调用classmethods的代码中的各种错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 尝试调用classmethods的代码中的各种错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1509字,纯文字阅读大概需要3分钟。
内容图文
![python – 尝试调用classmethods的代码中的各种错误](/upload/InfoBanner/zyjiaocheng/707/0fb29fd2e23844069c89e524ab795f4a.jpg)
我有这个代码:
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')
当我运行这个时,我不断收到错误:
Exception TypeError: "'classmethod' object is not callable"
我无法弄清楚这有什么问题,非常感谢你的帮助.
解决方法:
在定义类之前,您无法创建对classmethods的引用.你必须将它移出类定义.但是,使用全局函数映射来确定运行的内容真的很尴尬.如果你描述了你想要做的事情,我们可能会建议一个更好的解决方案.
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')
内容总结
以上是互联网集市为您收集整理的python – 尝试调用classmethods的代码中的各种错误全部内容,希望文章能够帮你解决python – 尝试调用classmethods的代码中的各种错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。