python 类的装饰器在import的时候会被执行 还是调用类的时候被执行
时间: 2024-09-15 17:06:21 浏览: 19
在 Python 中,类的装饰器(@decorator语法)通常在`import`模块时并不会直接执行。装饰器实际上是一个函数,它接受一个类作为输入并返回一个新的类,这被称为类装饰。当你通过`import`命令引入一个有装饰器修饰的类时,装饰器的作用仅仅是将原类进行了包装,并没有实时执行。
装饰器真正的执行发生在你需要使用这个被装饰的类以及它的方法的时候。当你创建类的实例,或者调用类里的方法时,这时装饰器的`wrapper`函数才会被调用。比如:
```python
def class_decorator(cls):
def new_method(self, *args, **kwargs):
print("Before method call")
result = cls.my_method(self, *args, **kwargs)
print("After method call")
return result
cls.new_method = new_method
return cls
@class_decorator
class MyClass:
def my_method(self, arg):
return arg + 10
my_instance = MyClass()
result = my_instance.new_method(5) # 执行装饰器
```
在这个例子中,`new_method`实际上是被装饰后的`MyClass`实例上调用的。