python3 中的单例

一、单例模式要点

一 是某个类只能有一个实例

二 是它必须自行创建这个实例

三 是它必须自行向整个系统提供这个实例‘

四 单例中无论创建几个对象,都是对同一个内存对象进行操作的

单例模式 :确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。

单例模式 简单代码及魔法方法

 class Test(object):

    __instance = None

    def __init__(self):  #初始化属性
        print("----init方法----")

    def __del__(self): #删除对象调用
        print("----del方法----")

    def __str__(self):   #打印对象调用,要有返回值
        print("----str方法----")

    def __new__(cls): #创建对象,并返回对象引用
        print("----new方法----")
        if cls.__instance == None:
            cls.__instance = object.__new__(cls)
        return cls.__instance

test1 = Test()
print(id(test1))

test2 = Test()
print(id(test2)) 
# 实例化一个单例

class Singleton(object):

    __instance = None

    __first_init = False

 

    def __new__(cls, age, name):

        if not cls.__instance:

            cls.__instance = object.__new__(cls)

        return cls.__instance

 

    def __init__(self, age, name):

        if not self.__first_init:

            self.age = age

            self.name = name

            Singleton.__first_init = True

 

 

a = Singleton(18, "dongGe")

b = Singleton(8, "dongGe")

 

print(id(a))

print(id(b))

 

 

print(a.age)

print(b.age)

 

a.age = 19

print(b.age)

运行结果:

ubuntu@ubuntu-VirtualBox:~/桌面/2_1805/13day$ python3 01-单例模式.py 140168837839672
140168837839672
18
18
19

单例模式优点

使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性

你可能感兴趣的:(python3 中的单例)