python class __call__ 如何运行的
时间: 2023-07-31 15:14:05 浏览: 50
`__call__` 是一个特殊的方法,当一个对象被当作函数调用时,`__call__` 方法会被自动调用。这意味着在 Python 中,可以将一个对象像函数一样进行调用。
以下是一个简单的示例:
```python
class MyClass:
def __init__(self):
self.counter = 0
def __call__(self):
self.counter += 1
print(f"Counter is now {self.counter}")
# 创建一个 MyClass 的实例
my_obj = MyClass()
# 将 my_obj 当作函数进行调用
my_obj()
my_obj()
my_obj()
```
输出:
```
Counter is now 1
Counter is now 2
Counter is now 3
```
在这个例子中,`__call__` 方法被定义为将计数器加一并打印它的值。当 `my_obj()` 被调用时,`__call__` 方法被自动调用,计数器的值被增加,并输出新的值。
相关问题
python __call__ call区别
`__call__()` 和 `call()` 都是用于在 Python 中实现可调用对象的方法。它们的作用是让对象像函数一样可以被调用,但它们的实现方式略有不同。
`__call__()` 是一个特殊方法,可以在一个类中定义,用于使该类的实例对象像函数一样可以被调用。当一个对象被调用时,Python 会自动调用该对象的 `__call__()` 方法。例如:
```
class CallableClass:
def __call__(self, x):
return x * x
obj = CallableClass()
print(obj(5)) # 输出:25
```
`call()` 是函数式编程库 `functools` 中的一个装饰器,用于将一个普通函数转化为可调用对象。例如:
```
from functools import call
@call
def my_func(x):
return x * x
print(my_func(5)) # 输出:25
```
总的来说,`__call__()` 是用于定义类的实例对象可以被调用的方法,而 `call()` 是用于将一个函数转化为可调用对象的装饰器。
python__call__
__call__ 是 Python 中的一个特殊方法(也称为魔术方法),它允许一个对象像函数一样被调用。当我们在一个对象上使用函数调用操作符 () 时,如果该对象定义了 __call__ 方法,那么这个方法会被调用。
下面是一个简单的示例来说明 __call__ 方法的使用:
```python
class MyClass:
def __call__(self, *args, **kwargs):
print("Calling MyClass instance")
obj = MyClass()
obj() # 调用 __call__ 方法
```
在上面的例子中,我们定义了一个名为 MyClass 的类,并在其中实现了 __call__ 方法。当我们创建 MyClass 的实例 obj 并将其像函数一样调用时,Python 会自动调用 obj 的 __call__ 方法,并输出 "Calling MyClass instance"。
使用 __call__ 方法,我们可以使一个类的实例具备函数的行为,这在某些情况下非常有用。