python - 类的装饰器里的__call__参数问题
巴扎黑
巴扎黑 2017-04-18 10:15:00
[Python讨论组]

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

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

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

巴扎黑
巴扎黑

全部回复(1)
迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号