【强基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)

相关推荐

  • Python列表的定义及使用方法是什么

    技术Python列表的定义及使用方法是什么这篇文章主要介绍“Python列表的定义及使用方法是什么”,在日常操作中,相信很多人在Python列表的定义及使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月1日
  • 4.运算符和流程控制

    技术4.运算符和流程控制 4.运算符和流程控制运算符
    在 PHP 中,赋值运算符 = 用于给变量赋值。
    在 PHP 中,算术运算符 + 用于把值加在一起
    1.算数运算符运算符
    名称
    描述
    实例
    结果x

    礼包 2021年12月23日
  • Python用哪些工具好

    技术Python用哪些工具好这篇文章主要介绍了Python用哪些工具好,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、最强终端:Upterm本来想推荐

    攻略 2021年10月28日
  • 端午节的简介50字,端午节的来历30字左右

    技术端午节的简介50字,端午节的来历30字左右战国时期的楚国(今湖北)诗人屈原在该日抱石跳汨罗江自尽端午节的简介50字,统治者为树立忠君爱国标签将端午作为纪念屈原的节日;部分地区也有纪念伍子胥、曹娥等说法。
    端午节与春节

    生活 2021年10月22日
  • 如何理解django中板的继承及包含

    技术如何理解django中板的继承及包含如何理解django中板的继承及包含,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。模板的继承应用场景,比如一个网站的

    2021年10月21日
  • C++11:std::tuple

    技术C++11:std::tuple C++11:std::tuple翻译来自:https://thispointer.com/c11-stdtuple-tutorial-examples/
    在本文中,

    礼包 2021年11月23日