美文网首页
python设计模式 - 单例模式元类

python设计模式 - 单例模式元类

作者: RedGecko | 来源:发表于2019-02-11 21:18 被阅读28次

python 环境

python==3.7.2

简介

元类是一个类的类,也就是说该类是它的元类的实例。类的定义由它的元类决定,通过元类,程序员可以创建自定义类。在 python 中一切皆为对象。比如 a = 5, 则 type(a) 返回 <type 'int'>,这意味着变量 a 为 int 类型,如果继续 type(int) 则返回 <type 'type'>,同理这意味着 int 为 type 类。此时,type 类即为 int 类的元类。

元类基础用法

class MyInt(type):
    def __call__(cls, *args, **kwargs):
        return type.__call__(cls, *args, **kwargs)


class NewInt(metaclass=MyInt):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return str(self.x + self.y)


if __name__ == '__main__':
    a = NewInt(4, 5)
    print(a)

元类与单例

元类是类的类,即元类控制着类的实例化。借此,可以实现类的单例模式。

元类实现单例模式

import sqlite3


class MetaSingleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(MetaSingleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]


class Database(metaclass=MetaSingleton):
    connection = None

    def connect(self):
        if not self.connection:
            self.connection = sqlite3.connect('db.sqlite3')
        return self.connection.cursor()


if __name__ == '__main__':
    db1 = Database().connect()
    db2 = Database().connect()
    print(db1)
    print(db2)

相关文章

  • python中OOP的单例

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

  • 单例

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

  • python单例模式

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

  • python 单例

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

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 基础-单例模式

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

  • python设计模式 - 单例模式元类

    python 环境 简介 元类是一个类的类,也就是说该类是它的元类的实例。类的定义由它的元类决定,通过元类,程序员...

  • python之理解单例模式

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

  • python面试题之单例模式

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

  • 单例模式 ,简单工厂,抽象工厂

    1.单例模式 如果一个类始终只能创建一个实例,则这个类成为单例类,这种设计模式称为单例模式 使用单例模式的优势: ...

网友评论

      本文标题:python设计模式 - 单例模式元类

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