看到文章(http://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=206275292&idx=1&sn=245ffc6b543c323adc4ed8ac54942e24&scene=5#rd)修饰类部分,[1]装饰器无参数:a.被装饰对象无参数:1>>>deftest(cls):2def_test():3clsName=re.findall("(w+)",repr(cls))[-1]4print"Call%s.__init()."%clsName5returncls()6return_test78>>>@test9classsy(object):10value=32111213>>>s=sy()14Callsy.__init().15>>>s1617>>>s.value183219>>>在我的环境执行出错.提示TypeError:'sy'objectisnotcallablepy版本如下$python-VPython2.7.9请问什么会出错?正确修饰类的应该如何使用?
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
@不常用昵称。我来说说,欢迎探讨如果我理解的正确的话,原帖子中“2.装饰类:被装饰的对象是一个类”的装饰类英文原称应该是ClassDecorators。根据语法要求,classdecorators的格式是这样的:#定义defdecorator(C):#processclassCreturnC#使用@decoratorclassC:...参考资料《LearningPython5E》page1277-1278所以,问题中classdecorator的定义是完全错的。应该是如下形式:deftest(cls):classC():#classC的定义填在这里。returnC
添加回答
举报
0/150
提交
取消