def __call__
时间: 2023-07-02 15:14:50 浏览: 39
`__call__` 是一个特殊方法(也称为魔术方法),它在 Python 中用于将一个对象作为函数调用。当你在一个对象上调用 `()` 运算符时,Python 将自动查找对象的 `__call__` 方法并执行它。因此,通过定义 `__call__` 方法,你可以使你的对象像函数一样被调用。
例如,下面是一个简单的示例:
```python
class Adder:
def __init__(self, n):
self.n = n
def __call__(self, x):
return self.n + x
adder = Adder(5)
result = adder(10)
print(result) # 输出 15
```
在这个例子中,`Adder` 类定义了一个 `__call__` 方法,它将实例化时传入的值 `n` 与调用时传入的值 `x` 相加并返回结果。当创建 `Adder` 对象并将其赋值给变量 `adder` 时,`adder` 实际上是一个可调用的对象。当你调用 `adder(10)` 时,Python 将自动执行 `adder.__call__(10)` 并返回结果。因此,最终的输出是 `15`。
相关问题
def __call__作用,举例
在 Python 中,`__call__` 是一个特殊的方法,用于让一个对象像函数一样被调用。当对象被调用时,Python 解释器会自动调用 `__call__` 方法,并将对象本身作为第一个参数传递给该方法。
以下是一个简单的例子,演示了如何使用 `__call__` 方法:
```python
class Adder:
def __init__(self, n):
self.n = n
def __call__(self, x):
return self.n + x
add5 = Adder(5)
result = add5(10)
print(result) # 15
```
在上面的例子中,我们定义了一个名为 `Adder` 的类,该类有一个实例变量 `n`,并且实现了 `__call__` 方法。在 `__call__` 方法中,我们将对象本身作为第一个参数传递给该方法,并返回 `self.n + x` 的结果。接下来,我们创建了一个名为 `add5` 的 `Adder` 实例,并将其初始化为 `5`。最后,我们将 `add5` 对象当作函数一样调用,并将 `10` 作为参数传递给它,从而输出了 `15`。
总之,`__call__` 方法可以让我们方便地将一个对象封装成一个可调用的函数,并且可以利用对象的状态来影响函数的行为。
def __call__()
__call__()是一个特殊的方法,在Python中用于将一个类的实例变成可调用的对象。当一个类的实例被调用时,会自动调用该实例的__call__()方法。通过在类中定义__call__()方法,可以使类的实例像函数一样被调用。在__call__()方法中,可以定义类实例被调用时要执行的操作。
在引用中的示例中,类A定义了__call__()方法,当实例a被调用时,会执行__call__()方法中的代码,输出实例的名字和年龄。
在Python中,__call__()方法的作用类似于一个函数,它可以被用来实现一些特殊的功能,例如在类的实例被调用时执行一些操作,通过这种方式,可以将一个类的实例表现得像一个函数。