【强基06】new和init魔法方法的调用顺序和使用规则

技术【强基06】new和init魔法方法的调用顺序和使用规则 【强基06】__new__和__init__魔法方法的调用顺序和使用规则调用顺序:
类里面__new__ 方法的执行优先级高于__init_

[强基06] _ _ new _ _和__init__ magic methods的调用顺序和使用规则

调用顺序:

类中__new__方法的执行优先级高于__init__方法。当类体代码运行时,首先执行__new__方法的函数体代码,然后执行__init__方法的函数体代码。

使用规则:

__init__方法,主要用于设置类的初始化参数。

__new__方法,主要用于通过类实例化来干预生成对象的过程,从而达到一定的目的;

示例:单一模式

了解流行的单一示例,即无论一个类被调用多少次,只能创建一个实例对象。

(每次实例化一个类,它都会创建一个新的对象。如果要求类只能实例化一次,也就是说,即使多次调用,它仍然使用同一个对象,这需要通过singleton模式来设置。)

在下面写一个单例模式来控制对象的创建。无论类被调用多少次,都使用同一个对象。

#单一模式

我的班级:

_ _实例=无

def __new__(cls,*args,**kwargs):

#确定该类是否创建了对象。

如果cls。__instance:

打印(满足条件,以前创建的对象,直接返回以前创建的对象)

返回cls。_ _实例

else:

打印(该类以前没有创建过对象)

#开始创建对象

obj=super()。__新__(cls)

#将__instance的值修改为创建的对象。

cls。_ _实例=obj

#返回对象

返回对象

m1=Myclass()

m2=Myclass()

m3=Myclass()

打印(m1、m2、m3)

打印(id(m1)、id(m2)、id(m3))

''打印结果如下:

类以前从未创建过对象。

如果满足条件,先前创建的对象将直接返回到先前创建的对象。

如果满足条件,先前创建的对象将直接返回到先前创建的对象。

__main__。B240 __main__处的Myclass对象。B240 __main__处的Myclass对象。B240处的Myclass对象

43168320 43168320 43168320

'''

#单一模式简化代码

#思维安排:

#如果变量__instance没有值,则创建一个对象并分配它以保存它;

#如果变量__instance有值,将直接返回之前保存的对象;

我的班级1:

_ _实例=无

def __new__(cls,*args,**kwargs):

如果不是cls。__instance:

obj=super()。__新__(cls)

cls。_ _实例=obj

返回cls。_ _实例

m1=Myclass1()

m2=Myclass1()

m3=Myclass1()

打印(m1、m2、m3)

打印(id(m1)、id(m2)、id(m3))

''打印结果如下:

B128处的_ _ main _ _ _ . myclass 1对象B128处的_ _ main _ _ _ . myclass 1对象B128处的_ _ myclass 1对象

43168040 43168040 43168040

'''

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149515.html

(0)

相关推荐

  • ipad怎么隐藏应用,ipadair怎么隐藏应用

    技术ipad怎么隐藏应用,ipadair怎么隐藏应用有时ipad怎么隐藏应用,我们不喜欢小朋友们乱玩我们的iPhone或iPad程序,那么该怎么把这些程序隐藏起来?今天小编就来跟大家分享一下隐藏的方法。 具体如下:
    1

    生活 2021年10月22日
  • LINUX图形化如何安装ORACLE

    技术LINUX图形化如何安装ORACLE这篇文章给大家分享的是有关LINUX图形化如何安装ORACLE的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。光盘加载操作系统mkdir /mnt/cdr

    攻略 2021年11月10日
  • 《Unix/Linux系统编程》第六章学习笔记

    技术《Unix/Linux系统编程》第六章学习笔记 《Unix/Linux系统编程》第六章学习笔记信号和信号处理
    摘要
    本章讲述了信号和信号处理;介绍了信号和中断的统一处理,有助于从正确的角度看待信号;

    礼包 2021年11月13日
  • 如何用JAVA 生成有格式的 XLS

    技术如何用JAVA 生成有格式的 XLS这篇文章将为大家详细讲解有关如何用JAVA 生成有格式的 XLS,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有什么方便的

    攻略 2021年12月2日
  • 微信小程序模拟零钱(微信小程序中的零钱通)

    技术Java模仿微信如何实现零钱通简易功能本篇文章为大家展示了Java模仿微信如何实现零钱通简易功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 需求描述使用Java 开发

    攻略 2021年12月14日
  • ios中tableview的优化(ios tableview置顶功能)

    技术iOS中tableView的分类有哪些这篇文章主要介绍iOS中tableView的分类有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!大致分了一下,一个uitableview需要几个方法去

    攻略 2021年12月24日