python里的__call__()方法

解释__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__在对象创建之后更改属性值

你可能感兴趣的:(python,开发语言)