怎么在一个类中定义的handler每次实例化都是同一个实例,不添加handler
时间: 2024-02-17 21:01:00 浏览: 121
单例模式。只有一个实例。
在一个类中定义的handler每次实例化都是同一个实例,是因为这个handler是定义在类的属性上,而不是定义在类的方法中。在类的属性中定义的对象,是类级别的对象,会被所有实例共享。如果想要为每个实例创建独立的handler对象,可以将handler定义在__init__方法中。这样每次实例化对象时,都会创建一个新的handler对象。例如:
```python
import logging
class MyClass:
def __init__(self):
self.logger = logging.getLogger(__name__)
self.logger.addHandler(logging.StreamHandler())
```
在上面的代码中,每次实例化MyClass对象时,都会为该对象创建一个新的handler对象,并将其添加到logger中。这样每个对象都有自己独立的handler对象,互相之间不会干扰。
阅读全文