def __call__
时间: 2023-10-22 22:03:42 浏览: 19
`__call__` 是一个特殊方法,当一个对象被调用时会自动触发。在 Python 中,函数本质上也是对象,所以函数也可以实现 `__call__` 方法。
当一个对象被调用时,Python 解释器会查找该对象的 `__call__` 方法。如果该方法存在,解释器就会调用它并传递相应的参数。如果该方法不存在,解释器就会抛出 `TypeError` 异常。
下面是一个简单的例子,展示了如何在 Python 中定义一个可调用对象:
```
class Adder:
def __init__(self, n):
self.n = n
def __call__(self, x):
return self.n + x
add5 = Adder(5)
print(add5(3)) # 输出 8
```
在上面的代码中,我们定义了一个名为 `Adder` 的类,它有一个 `__init__` 方法和一个 `__call__` 方法。`__init__` 方法用于初始化对象的属性,`__call__` 方法接收一个参数 `x` 并返回 `self.n + x` 的结果。我们创建了一个 `Adder` 对象 `add5`,并将其初始化为 `Adder(5)`。然后,我们调用 `add5(3)`,这会触发 `add5` 对象的 `__call__` 方法,返回结果 `8`。
相关问题
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__()方法的作用类似于一个函数,它可以被用来实现一些特殊的功能,例如在类的实例被调用时执行一些操作,通过这种方式,可以将一个类的实例表现得像一个函数。