Python经典面试题:单例模式实现方式
Python实现单例模式的方法有两种,下面分别演示了两个例子:1. 使用metaclass的方式,通过定义Singleton类,在类的初始化中判断实例是否已存在,若不存在则创建实例。示例代码如下:
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中的单例模式。
下载地址
用户评论