python call
时间: 2024-09-29 07:11:38 浏览: 19
`call()`函数在Python中扮演着特殊的角色,它允许你在定义一个类时使其行为像一个函数。当一个类定义了一个名为`__call__`的方法时,该类的对象可以直接作为函数来调用,无需通过`.()`运算符。
**1. 类A为例**[^1]:
```python
class A(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __call__(self):
print('my name is', self.name)
print('my age is', self.age)
a = A('jack', 26) # 类似于创建一个工厂函数
a() # 直接调用,就像普通函数
```
在这个例子中,当你创建`A`类的一个实例并调用它时,会执行`__call__`方法内的代码。
**2. 使用`__call__`实现装饰器**[^2]:
```python
class Decorator:
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print("Before function is called")
result = self.func(*args, **kwargs)
print("After function is called")
return result
@Decorator
def my_function():
print("Inside my_function")
# 调用被装饰后的函数
my_function()
```
在这里,`Decorator`类就是一个装饰器,当应用到`my_function`上时,会在实际调用前后添加额外的行为。`__call__`使得装饰器可以在不改变原函数签名的情况下扩展其功能。