首页 > 编程语言 > 详细

python-call调用对象

时间:2020-07-21 12:30:27      阅读:54      评论:0      收藏:0      [点我收藏+]

如果在类中实现了 __call__ 方法,那么实例对象也将成为一个可调用对象

class Entity1:
    def __init__(self, size, x, y):
        self.x, self.y = x, y
        self.size = size
    def __call__(self, x, y):
        self.x, self.y = x, y

e = Entity1(1, 2, 3) #实例
print(e.x,e.y)
e(4, 5) #实例对象可调用
print(e.x,e.y)


class Entity2:
    def __init__(self, *args,**kwargs):
        print(args,kwargs)
    def __call__(self, *args,**kwargs):
        print(args,kwargs)

e = Entity2(1, 2, 3,a=1,b=2)
e(4, 5,c=3)

 

#类可以记录数据(属性),利用这种特性可以实现基于类的装饰器
class Counter:
    def __init__(self, func):
        self.count = 0
        self.func = func

    def __call__(self, *args, **kwargs):
        self.count += 1
        return self.func(*args, **kwargs)

@Counter
def fuc():
    pass

[fuc() for i in range(10)]
print(fuc.count)

 

python-call调用对象

原文:https://www.cnblogs.com/shuzf/p/13353681.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!