python 单例类实现
时间: 2023-08-05 09:25:47 浏览: 97
Python 中实现单例模式可以通过以下两种方式:
1. 使用装饰器实现单例模式
```python
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
```
2. 使用元类 (metaclass) 实现单例模式
```python
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]
class MyClass(metaclass=Singleton):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
```
两种方法都可以实现单例模式,装饰器的方式更加简洁,但是元类的方式更加灵活,可以在单例模式的基础上进行更多的扩展。
阅读全文