(.*)释然 2019-02-21 21:37 采纳率: 100%
浏览 3912
已采纳

Python使用类装饰器出现报错:TypeError: test2() missing 1 required positional argument: 'b'


class Timer(object):
    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print("权限验证成功...")
        result = self.func(*args, **kwargs)
        print("新添加退出成功提示...")
        return result


class Test(object):

    @Timer
    def test2(self, a, b):  # 需要参数的
        c = a + b
        print("test2两个数的求和结果是:", c)


t = Test()
t.test2(2, 3)

出现报错:TypeError: test2() missing 1 required positional argument: 'b'

为什么会出现selef必须传参呢,如果在test2上面添加@staticmethod删除selef参数将不会出现报错,但是这不符合装饰器的用法了,应该怎么改才能使得Test类不该任何代码的情况下加@Timer就能直接使用呢

  • 写回答

2条回答

  • (.*)释然 2019-02-23 00:56
    关注
    函数式装饰器即可
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊