首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python中的__call__

python中的__call__

作者头像
py3study
发布2020-01-19 17:11:58
发布2020-01-19 17:11:58
1.6K0
举报
文章被收录于专栏:python3python3

    如果python中的一个类定义了 __call__ 方法,那么这个类它的实例就可以作为函数调用,也就是实现了 () 运算符,即可调用对象协议     下面是一个简单的例子:

代码语言:javascript
复制
class TmpTest:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __call__(self, x, y):
        self.x, self.y = x, y


a = TmpTest(1, 2)
a(4, 5)
print(a.x, a.y)
4 5

    在本文中不讨论装饰部分的内容,借用装饰器来讲解一个__call__方法的使用,如果需要将一个类作为装饰器,那需要为这个类实现__call__方法,一个使用__call__来实现类装饰器的例子:

代码语言:javascript
复制
class TmpTest:
    def __init__(self, func):
        self.func=func

    def __call__(self, *args,**kwargs):
        result=self.func(*args,**kwargs)
        return result


@TmpTest
def add_num(x,y):
    return x+y

print(add_num(1,0))
1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档