单例模式的理解

简介: # 首先了解object类实例化对象时候使用new的时候发生了什么# class Person():# def __init__(self):# print('这是init方法')### a = Person() # 不重写object的new方法不采用...
# 首先了解object类实例化对象时候使用new的时候发生了什么
# class Person():
#     def __init__(self):
#         print('这是init方法')
#
#
# a = Person()     # 不重写object的new方法不采用单例化模式的时候,则每实例化一个对象
# b = Person()     # object的new方法会创建一块内存地址去存储这个实例化对象
# print(id(a))     # 所以每个实例化对象的内存地址都是不一样的,分别会调用init初始化方法,初始化
# print(id(b))

# 其次在子类中重写new方法
class Person(object):
    zheshibenshen = None
    def __new__(cls):
        if cls.zheshibenshen == None:
            cls.zheshibenshen = super().__new__(cls)
        return cls.zheshibenshen

    def __init__(self):
        print('这是init方法')


a = Person()     # 这里重写了父类object的new方法,使这个类每次实例化对象的时候总是返回zheshibenshen(即它自己)
b = Person()     # 第一次实例化时,这里就是重新调用object的new方法,创建一个内存地址存放实例对象
                 # 不重写new,object也会执行super().__new__(Person)这个方法,创建一个内存地址存放实例
print(id(a))     # 然后再把它赋值给zheshibenshen然后返回它,它们其实就是这个类第一次实例化时的对象
# # 到这里为止跟不重写new方法时的过程是一样的,重点是后面这个类再去实例化对象的时候
# # 也就是说以后再实例化对象的时候,每次new都会判断这个实例化的对象,它自己是不是空,不是空就返回它自己
print(id(b))     # 所以每次实例化对象的时候,(重写后)每次new方法里返回的都是第一个实例化对象
                 # 都指向的第一个实例化的内存地址,所以不管以后实例化多少个对象,都是同一个内存地址里的同一个东西

  

                                                                   -------  知识无价,汗水有情,如需搬运请注明出处,谢谢!

目录
相关文章
|
4月前
|
C++
C++单例模式
C++中使用模板实现单例模式的方法,并通过一个具体的类A示例展示了如何创建和使用单例。
44 2
|
设计模式 安全 编译器
2023-6-12-第三式单例模式
2023-6-12-第三式单例模式
87 0
|
9月前
|
设计模式 安全 Java
单例模式
​ 如有错误或有补充,以及任何的改进意见,请在评论区留下您的高见,同时文中给出大部分的示例 如果觉得本文写的不错,不妨点个赞,收藏一下,助力博主产生质量更高的作品 概念 单例模式(Singleton Pattern)是软件设计模式的一种,用于确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于需要频繁创建和销毁同一对象的场景,以减少系统资源的消耗和提高性能。 优缺点 优点: 实例控制:单例模式确保类只有一个实例,可以防止其他对象实例化自己的副本,从而确保所有对象都访问唯一实例。 节约资源:由于系统中只存在一个对象,可以节约系统资源,特别是在需要频繁创建和销毁对象的场景中,可
71 0
|
设计模式 安全 Java
单例模式的运用
单例模式的运用
54 0
找对象需要单例模式吗?
单例模式的类只提供私有的构造函数
|
SQL 安全 Java
五种单例模式介绍
五种单例模式介绍
99 0
|
设计模式 缓存 Java
php设计模式-单例模式
php设计模式-单例模式
90 1
|
SQL 安全 Java
单例模式的理解
谈谈你对单例模式的理解。也算是老生常谈的问题了~~~
1090 1
|
存储 安全 调度
单例模式的简单介绍
单例模式的简单介绍
|
设计模式 缓存
我学会了,单例模式
单例模式属于创建型模式,这个类型的设计模式是将 对象的创建和使用解耦了,花式的去创建对象。
145 0
我学会了,单例模式

热门文章

最新文章