【发布时间】:2019-07-31 12:17:41
【问题描述】:
我正在制作一个简单的装饰器,它以大写形式输出返回值。这是我试过的代码:
class UpperDecorator:
def __init__(self, func, msg):
self.func = func
self.msg = msg
def __call__(self):
res = self.func(self.msg)
return res.upper()
@UpperDecorator
def message_app(msg):
return msg
res = message_app('Hi')
print(res)
运行代码时出现此错误:
TypeError: __init__() missing 1 required positional argument: 'msg'
然后我稍微修改了构造函数(def __init__(self, func, msg=None):)并得到了这个错误:
TypeError: __call__() takes 1 positional argument but 2 were given
请帮我解决。谢谢
【问题讨论】:
标签: python-3.x decorator