python里的__call__()方法

Python类的__call__方法允许实例化后的对象像函数一样被调用。当一个类的实例被调用时,__call__会被自动触发。例如,定义一个Adder类,它的__call__方法接收参数并返回数据与参数的和。这样,Adder的实例就可以像函数那样被调用来执行特定计算,增加了代码的灵活性和可扩展性。

解释__call__ 方法是 Python 中类的特殊方法,当一个类的实例被“调用”时,就会自动触发这个方法。“调用”一个类的实例就是使用小括号 () 操作符。

举个例子:

class Adder:
    def __init__(self, value=0):
        self.data = value

    def __call__(self, x):
        return self.data + x

add = Adder()
print(add(1)) # 1
print(add(2)) # 2

上面这个类 Adder 有一个__call__ 方法,该方法接收一个参数x,并返回data + x 的值。我们可以通过实例来进行调用,就像函数调用一样,如上面代码中的add(1) 和add(2),他会自动调用__call__方法,并返回结果。

使用__call__ 方法可以使一个类的实例具有“函数”的行为。在一些情况下这可以更方便地实现一些功能。

还需要注意的是,与 init 方法一样, __call__方法的名字也是固定的,不能随意更改。

总结

总之,使用 call 方法可以使类的实例具有可调用的特性,使得类的实例可以像函数一样被调用,这能带来很多便利和可能性,增加程序的灵活性和可扩展性。

再附带一个程序,更能看懂

class Adder:
    def __init__(self, value=0):
        self.data = value
        print("data in init is:{}".format(self.data))
    def __call__(self, x,y):
        print("In call,x is {},y is {}".format(x,y))
        return self.data + x+y
add = Adder()
print(add(1,3))
print(add(2,4))

运行结果

data in init is:0
In call,x is 1,y is 3
4
In call,x is 2,y is 4
6

__init__是在创建对象的时候用,__call__在对象创建之后更改属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值