__new__ 和 __init__ 的区别
目录
- 区别
- __new__
- __init__
- 参考
区别
控制类初始化和构建过程,两个函数的参数有区别(cls、self)
如果__new__函数返回一个已经存在的实例(不论是哪个类的),__init__不会被调用
_new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径
__new__
- 如果没有返回值会怎么样?
- 单例模式
- 修改构建过程
__init__
- 初始化变量
调用顺序:
先调用__new__,再__init__
参考
- https://zhuanlan.zhihu.com/p/35943253
- https://xxhs-blog.readthedocs.io/zh_CN/latest/how_to_be_a_rich_man.html