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

相关推荐

  • elasticsearch索引管理知识点总结(elasticsearch设计减少内存使用)

    技术Elasticsearch可搜索快照是如何办到大幅降低存储成本的Elasticsearch可搜索快照是如何办到大幅降低存储成本的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需

    攻略 2021年12月16日
  • 中庭是什么意思,中庭地白树栖鸦的中庭什么意思

    技术中庭是什么意思,中庭地白树栖鸦的中庭什么意思中庭:即庭中,庭院中中庭是什么意思。地白:指月光照在庭院的样子。
    译:中秋月光洒落中庭,清冷树枝安栖乌鸦,地上洁白,天空宁静。
    扩展资料:此诗是诗人在中秋佳节与朋友相聚时所

    生活 2021年10月24日
  • sqlite3基本操作(sqlite3怎么创建数据表)

    技术SQLite3如何实现数据库全文搜索这篇文章主要为大家展示了“SQLite3如何实现数据库全文搜索”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQLite3如何实现数据

    攻略 2021年12月18日
  • c++面向对象程序设计(c++用什么软件编程)

    技术C++右值如何引用本篇内容介绍了“C++右值如何引用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.左值和右值在我

    攻略 2021年12月16日
  • Redis的持久化机制采用RDB还是AOF

    技术Redis的持久化机制采用RDB还是AOF这篇文章主要讲解了“Redis的持久化机制采用RDB还是AOF”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis的持久

    攻略 2021年11月26日
  • MySQL数据库优化的方案与实践是怎样的

    技术MySQL数据库优化的方案与实践是怎样的这篇文章给大家介绍MySQL数据库优化的方案与实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。最近一段时间,我们整理了一些关于Percona,L

    攻略 2021年12月1日