从装饰器函数返回类中的Member函数

时间:2019-09-14 08:21:39

标签: python

我编写了一个装饰器函数,当装饰一个普通函数时,它工作正常,但是当我装饰类中的成员函数时,它抛出TypeError:print_cmd()恰好接受2个参数(给定1个)

装饰器函数与普通函数正常工作,但不适用于类的成员函数

ss=[]
def deco(func):
   def new_func(*args, **kwargs):
       for i in new_arg:
            "Do some operation"  
       return func(','.join(ss))
   return new_func
class aaa:   
   @deco
   def print_cmd(self,cmd):
       print cmd

ii=aaa()
ii.print_cmd('hello,ff,are')

TypeError:print_cmd()恰好接受2个参数(给定1个参数)

1 个答案:

答案 0 :(得分:1)

为了正确调用带有原始参数的包装函数,请尝试以下代码:

return func(*args, **kwargs)

原始代码使用单个字符串参数而不是原始函数的参数调用包装的函数:

return func(','.join(ss))