一、类
1.Python的__init__和__new__区别?
两者都是魔术方法,都是在特定的时候自动调用。
__init__初始化方法:
-
触发时机:实例化对象之后触发(实例化一个对象的时候有两个步骤:首先是造一个对象出来,然后再给这个对象初始化一下东西,这个init方法就是在初始化一些属性的时候触发的)。 -
作用:为对象添加对象的所属成员。 -
参数:一个self接受当前对象,其他的参数根据实例化的传参决定。 -
返回值:没有返回值 -
注意事项:没有 __init__方法里面的self,实例化的对象是谁,这个self就是对于谁的调用。
__new__构造方法:
-
触发时机:实例化对象的时候触发(实例化一个对象的时候有两个步骤:首先是造一个对象出来,然后再给这个对象初始化一下东西,这个new方法就是在造对象的时候触发的)。此时self都还没有出来,只有cls(类)。 -
作用:管理控制对象的生成过程。(可以控制这个对象到底是生成还是不生成) -
参数:一个cls接受当前的类,其余都根据当前传参而定。 -
返回值:可有可无,没有返回值的话,实例化的结果就是None。 -
注意事项:new魔术方法和init方法的参数一致,除了第一个。 举个例子:
class Human:
def __new__(cls,sex):
if sex == '女':
object.__new__(cls)
else:
return None
one = Human('女')
two = Human('男')
__del__析构方法:
- 触发时机:对象被系统回收的时候触发,或者是使用del方法的时候触发。
- 作用:回收程序使用过程中的信息和变量等。
- 参数:一个self接收当前对象。
- 返回值:没有。
- 注意事项:没有。
未完待续。
|