美文网首页编程随笔
python面试题之单例模式

python面试题之单例模式

作者: jj_jump | 来源:发表于2020-04-14 22:37 被阅读0次
Image

python面试题之单例模式

​单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

__new__()__init__()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例 这个绝对常考啊.绝对要记住1~2个方法,当时面试官是让手写的.

1、 使用new方法


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/4/20 13:27
# @Author  : 一叶知秋
# @File    : test7.py
# @Software: PyCharm
class Singleton(object):

    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kw)

        return cls._instance


class MyClass(Singleton):
    a = 1


if __name__ == '__main__':
    a = MyClass()
    b = MyClass()
    print('a:', id(a))
    print('b:', id(b))
    print(a is b)

运行结果:

a: 1995200289352
b: 1995200289352
True

2、 装饰器版本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/4/20 13:27
# @Author  : 一叶知秋
# @File    : test7.py
# @Software: PyCharm

# 使用类装饰器实现单例
class Singleton(object):
    def __init__(self, cls):
        self._cls = cls
        self._instance = {}

    def __call__(self, *args, **kwargs):
        if self._cls not in self._instance:
            self._instance[self._cls] = self._cls(*args, **kwargs)
        return self._instance[self._cls]


# 使用函数装饰器实现单例
def singleton(cls):
    instances = {}

    def get_instance(*args, **kw):
        if cls not in instances:
            instances[cls] = cls(*args, **kw)

        return instances[cls]

    return get_instance


@Singleton
class MyClass:
    a = 1


if __name__ == '__main__':
    a = MyClass()
    b = MyClass()
    print('a:', id(a))
    print('b:', id(b))
    print(a is b)

运行结果:

a: 3077134387656
b: 3077134387656
True

希望对大家面试有帮助!

参考链接

相关文章

  • python面试题之单例模式

    python面试题之单例模式 ​单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。...

  • Python面试题资料集合(一)

    Python面试题资料集合 (一) 编辑:小贤 目录 1:Python如何实现单例模式? 2 2:什么是lambd...

  • Java23种设计模式之「单例模式」

    单例模式 之 holder 模式 (推荐) 单例模式 之 饱汉模式(懒汉模式) 单例模式 之 双重锁检查 (Dou...

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 2018-06-19 Python中的单例模式的几种实现方式的及

    转载自: Python中的单例模式的几种实现方式的及优化 单例模式 单例模式(Singleton Pattern)...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

网友评论

    本文标题:python面试题之单例模式

    本文链接:https://www.haomeiwen.com/subject/rnnxvhtx.html