python写一个单例对象
时间: 2023-02-18 18:19:22 浏览: 67
可以使用以下方法来实现 Python 中的单例模式:
```
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super().__new__(cls, *args, **kwargs)
return cls._instance
```
使用方法:
```
s1 = Singleton()
s2 = Singleton()
print(s1 is s2) # True
```
这里我们使用了 `__new__` 方法来实现单例模式。当我们调用 `Singleton()` 时,会先调用 `__new__` 方法来创建对象,如果 `_instance` 已经存在,则直接返回该对象,否则调用父类的 `__new__` 方法来创建新的对象。
此外,还可以使用装饰器实现单例模式:
```
def singleton(cls):
instances = {}
def wrapper(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return wrapper
@singleton
class MyClass:
pass
```
使用方法:
```
c1 = MyClass()
c2 = MyClass()
print(c1 is c2) # True
```
这里我们使用了装饰器来实现单例模式。`singleton` 装饰器会保存所有已创建的 `MyClass` 对象,如果当前类已经被创建过,则直接返回之前创建的对象,否则创建新的对象。