python 装饰器 self 传递
时间: 2023-07-08 19:48:54 浏览: 95
Python 中的装饰器是一种特殊的语法,它可以在不改变函数本身的情况下,动态地修改函数的行为。装饰器本质上就是一个函数,它接受一个函数作为参数,并返回一个新的函数。当我们使用装饰器来修饰一个类的方法时,装饰器函数的第一个参数通常是 `self`,表示当前实例。
例如,我们可以定义一个装饰器函数 `my_decorator`,它接受一个函数作为参数,并在函数执行前后打印一些信息:
```python
def my_decorator(func):
def wrapper(self, *args, **kwargs):
print("Before function is called")
result = func(self, *args, **kwargs)
print("After function is called")
return result
return wrapper
```
然后,我们可以使用这个装饰器来修饰一个类的方法:
```python
class MyClass:
@my_decorator
def my_method(self, arg1, arg2):
print("Inside my_method")
```
在这个例子中,当我们调用 `my_method` 方法时,装饰器函数 `my_decorator` 将会在方法执行前后打印一些信息。
需要注意的是,装饰器函数的第一个参数通常是 `self`,表示当前实例。在装饰器函数内部,我们需要将 `self` 参数传递给被修饰的函数,并保留其他参数不变。这可以通过在 `wrapper` 函数中使用 `*args` 和 `**kwargs` 来实现。例如,在上面的例子中,我们将 `self` 参数传递给 `my_method` 方法,并保留其他参数不变。