1. 首页
  2. 编程语言
  3. Python
  4. Python经典面试题:单例模式实现方式

Python经典面试题:单例模式实现方式

上传者: 2023-11-10 20:50:41上传 DOC文件 51.5KB 热度 11次

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()

  1. 使用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中的单例模式。

下载地址
用户评论