单例模式Python
时间: 2024-10-17 15:01:45 浏览: 21
单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Python中,由于语言特性,不需要像Java那样显式地创建和管理单例,而是通过模块导入机制、`__new__`特殊方法或者利用`functools`库的`lru_cache`装饰器等手段实现。
以下是几种常见的Python实现单例模式的方式:
1. **使用模块导入**(无锁版本):
```python
class Singleton:
_instance = None
def __new__(cls):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
# 实例化时会自动获取已有实例,如果没有则创建
singleton = Singleton()
```
2. **线程安全的单例**(使用锁):
```python
import threading
class Singleton:
_instance_lock = threading.Lock()
_instance = None
def __new__(cls):
if not cls._instance:
with cls._instance_lock:
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
```
3. **使用`functools.lru_cache`**(缓存装饰器版本):
```python
from functools import lru_cache
@lru_cache(maxsize=1)
def singleton():
class SingletonClass:
pass
return SingletonClass()
singleton_instance = singleton()
```
阅读全文