python - 类的装饰器里的__call__参数问题

 丶希_ 发布于 2022-10-26 19:27

新手初学python,输出的结果跟我想象中不一样

 `#定义一个类的装饰器Bold
class Bold(object):
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        return '' + self.func(*args, **kwargs) + ''
        
   
    #相当于 hello=Bold(hello) 生成一个hello.func为hello函数的
    #Bold实例化对象  
    @Bold                        
    def hello(name):
        return 'hello %s' % name`
        
    #然后我打算传多个参数 *args
    >>> hello('ss','sss','aa')
    File "", line 5, in __call__
    TypeError: hello() takes exactly 1 argument (3 given)`
    
    

这里完全不理解,这里的hello()里的参数不是__call__的args, *kwargs 吗,为什么变成只能是一个参数?

1 个回答
  • *args, **kwargs 分别是表示可以接收可变参数和关键字参数,可以接收任何0个或者1个或者多个参数。
    *args, **kwargs组合起来就是说__call__能接收任何参数啦~~但是顺序要对。

    2022-10-27 01:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有