zoukankan      html  css  js  c++  java
  • 类的单例模式

    单例模式

    在确定“类中的属性与方法”不变时,需要反复调用该类

    产生不同的对象,会产生不同的内存地址,造成资源浪费

    让所有类在实例化时,指向同一个内存地址,称之为单例模式

    (无论产生多少个对象,都会指向单个 实例)

    优点:节省空间

    __new__方法实现单例

    要知道,虽然__new__方法接受的参数和__init__一样,但__init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例的方法,所以,当我们创建一个类的时候,编译器会先执行__new__方法,再执行__init__方法。


    ```python class Test:
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls,'_instance'):  #hasattr(a,b)方法是判断a里边有没有b,在这里就是判断cls(本类)里边是否存在名为'_instance'的变量
            cls._instance = super().__new__(cls)  
        return cls._instance
    

    第一个参数cls是当前正在实例化的类。

    如果要得到当前类的实例,应当在当前类中的__new__()方法语句中调用当前类的父类 的__new__()方法。

    a = Test()
    print(id(a))
    b = Test()
    print(id(b))

    <br>
    
    
    > 2400710875016
    > 2400710875016
    
    > 原理:
    >
    > 每次调用\__new__方法,都会判断一次本类有没有实例化对象产生过,没有的话,就创建一个,如果有的话,就返回以前创建过的那个对象,并将新的参数赋给原来的实例,对其进行更新。
  • 相关阅读:
    Mina Core 10-执行器过滤器
    Mina Core 09-编解码过滤器
    Mina Core 08-IoBuffer
    Mina Basics 07-处理程序Handler
    Mina Basics 06-传输
    Mina Basics 05-过滤器
    Mina Basics 04- 会话
    Mina Basics 03-IoService
    Mina Basics 02-基础
    Mina Basics 01- 入门
  • 原文地址:https://www.cnblogs.com/kai-/p/11959249.html
Copyright © 2011-2022 走看看