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

相关推荐

  • C#如何实现前台与后台方法互调

    技术C#如何实现前台与后台方法互调本篇文章为大家展示了C#如何实现前台与后台方法互调,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前台与后台方法互调是很多读者关心的功能。下面提供

    攻略 2021年11月24日
  • 身高英语,身高和年龄用英语怎么说

    技术身高英语,身高和年龄用英语怎么说hallo,mynameis(姓名),i`m(年龄)yearsold.i`mform(地名),myheightis(数字)centimeter.mybirthdayis(生日)ilik

    生活 2021年10月19日
  • 岁寒然后知松柏之后凋也的意思,岁寒然后知松柏之后凋也的作文

    技术岁寒然后知松柏之后凋也的意思,岁寒然后知松柏之后凋也的作文《论语》一书中,有这样一句经典语句:子曰,岁寒,然后知松柏之后凋也。这句话出自《论语·子罕》,意思是:只有天气寒冷了,我们才明白松柏是最后凋谢的岁寒然后知松柏

    生活 2021年10月28日
  • Vue基于TypeScript的一次错误使用分析

    技术Vue基于TypeScript的一次错误使用分析这篇文章给大家介绍Vue基于TypeScript的一次错误使用分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述在使用Vue基于TypeScr

    攻略 2021年11月9日
  • 怎么进行Spring中的环绕增强

    技术怎么进行Spring中的环绕增强怎么进行Spring中的环绕增强,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通过前置增强和后置增强可以很方便的在目标方

    攻略 2021年12月2日
  • 如何使用命令行工具Graudit来查找你代码中的安全漏洞

    技术如何使用命令行工具Graudit来查找你代码中的安全漏洞如何使用命令行工具Graudit来查找你代码中的安全漏洞,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易

    攻略 2021年11月12日