page contents

init 和new的区别?

轩辕小不懂 发布于 2021-11-13 11:14
阅读 573
收藏 0
分类:大数据
2405
Nen
Nen
- 程序员

当我们使用「类名()」创建对象的时候,Python 解释器会帮我们做两件事情:第一件是为对象在内存分配空间,第二件是为对象进行初始化。「分配空间」是new 方法,初始化是init方法。

new 方法在内部其实做了两件事情:第一件事是为「对象分配空间」,第二件事是「把对象的引用返回给 Python 解释器」。当 Python 的解释器

拿到了对象的引用之后,就会把对象的引用传递给 init 的第一个参数 self,init 拿到对象的引用之后,就可以在方法的内部,针对对象来定义实例属性。

之所以要学习 new 方法,就是因为需要对分配空间的方法进行改造,改造的目的就是为了当使用「类名()」创建对象的时候,无论执行多少次,在

内存中永远只会创造出一个对象的实例,这样就可以达到单例设计模式的目的。


请先 登录 后评论