单例模式在Python中有两种主要实现方式,下面通过两个例子进行详细解析:1. 使用metaclass实现单例模式。在这个例子中,定义了一个名为Singleton的metaclass,该metaclass通过在类的初始化中判断实例是否已存在,从而保证一个类只有一个实例。以下是示例代码:
python
class Singleton(type):
def init(cls, name, bases, dict):
super(Singleton, cls).init(name, bases, dict)
cls.instance = None
def __call__(cls, *args, **kw):
if cls.instance is None:
cls.instance = super(Singleton, cls).__call__(*args, **kw)
return cls.instance
class MyClass(object):
metaclass = Singleton
print MyClass()
- 使用decorator实现单例模式。这个例子中,通过定义一个singleton装饰器,内部维护一个instances字典,用于存储各个类的实例。以下是示例代码:
python
def singleton(cls):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return getinstance
@singleton
class AnotherClass:
pass
print(AnotherClass())
以上两个例子展示了在面试中可能会涉及到的Python单例模式实现方式。
暂无评论