为了账号安全,请及时绑定邮箱和手机立即绑定

关于修饰类 @class

关于修饰类 @class

UYOU 2019-04-19 16:11:37
看到文章(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):
#processclassC
returnC
#使用
@decorator
classC:...
参考资料《LearningPython5E》page1277-1278
所以,问题中classdecorator的定义是完全错的。
应该是如下形式:
deftest(cls):
classC():
#classC的定义填在这里。
returnC
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信