从类中的装饰函数返回到成员函数

2024-03-29 08:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个decorator函数,当我装饰到一个普通函数时,它工作得很好,但是当我装饰到类中的一个成员函数时,它的抛出类型错误:print_cmd()正好接受2个参数(给定1个参数)

decorator函数可以很好地与普通函数配合使用,但对于类的成员函数却不起作用

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个)


Tags: 函数cmdnew参数returndef成员装饰
1条回答
网友
1楼 · 发布于 2024-03-29 08:33:34

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

return func(*args, **kwargs)

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

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

相关问题 更多 >