python类中的__call__
时间: 2023-07-03 07:24:17 浏览: 93
在 Python 类中,`__call__` 是一个特殊的方法,它允许我们将实例对象像函数一样进行调用。也就是说,当一个对象被调用时,Python 解释器会自动寻找该对象的 `__call__` 方法,并将调用操作转交给该方法进行处理。
使用 `__call__` 方法,我们可以使得一个类的实例对象可以像函数一样被调用,这在某些情况下可以方便我们的编程。
例如,我们可以定义一个类 `Counter`,它包含一个计数器变量 `count` 和两个方法 `increase` 和 `decrease`,用于增加和减少计数器的值。我们还可以定义 `__call__` 方法,使得 `Counter` 的实例对象可以像函数一样被调用,每次调用时都会将计数器的值加 1。
下面是一个简单的例子:
```python
class Counter:
def __init__(self):
self.count = 0
def increase(self):
self.count += 1
def decrease(self):
self.count -= 1
def __call__(self):
self.increase()
return self.count
c = Counter()
print(c()) # 输出 1
print(c()) # 输出 2
print(c()) # 输出 3
```
在这个例子中,当我们调用 `c()` 时,Python 解释器会自动调用 `c` 对象的 `__call__` 方法,该方法会将计数器加 1,并返回计数器的当前值。这样,每次调用 `c()` 时,计数器的值都会增加。
阅读全文