python中实例创建过程离不开两个函数__init__() 和 __new__(),__new__()负责创建instance(实例),而__init__()负责customize(个性化定制,或者称为初始化 -- 其他语言中称呼),然后返回给caller(调用者),即完成实例创建。有一个比喻特别适合这两个角色的工作: 我们生活中房子建造过程就如同python中实例创建,楼看作类,具体到某个楼就是实例。
- 第一步:楼房从无到未装修的楼房 --- 这一步在实例化中由__new__(cls)方法完成,__new__(cls)创建新的内存空间
- 第二步:装修为成品 ---- __new__(cls)出来的相当于一个空的房子,在计算机中实际工作开辟出一个新的内存__new__(cls), 然后调用__init__() 方法把实例变量(__init__()函数中变量)copy(深拷贝,放置可变对象共享内存地址)一份到这个空间,即完成实例化过程
下面讲讲这两个函数: