python面向对象编程的@log
时间: 2023-12-05 12:05:32 浏览: 72
在Python中,可以使用装饰器来实现日志记录功能。装饰器是一种特殊的函数,它可以在不修改原函数代码的情况下,为函数添加额外的功能。在面向对象编程中,可以使用装饰器来为类的方法添加日志记录功能。
一个常见的实现方式是定义一个名为`log`的装饰器函数,该函数接受一个函数作为参数,并返回一个新的函数。在新的函数中,可以在调用原函数之前和之后添加日志记录的代码。
下面是一个示例代码,演示了如何使用`@log`装饰器为类的方法添加日志记录功能:
```python
def log(func):
def wrapper(*args, **kwargs):
print(f'调用 {func.__name__} 方法')
result = func(*args, **kwargs)
print(f'{func.__name__} 方法执行完毕')
return result
return wrapper
class MyClass:
@log
def my_method(self):
print('执行 my_method 方法')
obj = MyClass()
obj.my_method()
```
在上述代码中,`log`装饰器函数接受一个函数作为参数,并返回一个新的函数`wrapper`。在`wrapper`函数中,首先打印出要调用的方法名,然后调用原函数,最后打印出方法执行完毕的信息。
通过在`my_method`方法上使用`@log`装饰器,可以为该方法添加日志记录功能。当调用`my_method`方法时,会先打印出方法名,然后执行方法的代码,最后打印出方法执行完毕的信息。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的日志记录功能。可以根据具体需求来定义装饰器函数,并在其中添加适当的日志记录代码。
#### 引用[.reference_title]
- *1* *2* *3* [Python:函数与面向对象编程总结](https://blog.csdn.net/qq_44733409/article/details/119483314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文