简介
__new__
和__init__
都是Python中的特殊方法,它们在对象生命周期中起到不同的作用。
用法
1、__new__
方法:
__new__
是一个静态方法,用于创建一个新的对象实例。当你调用一个类时,__new__
方法是第一个被调用的方法。它的主要任务是分配内存空间,并返回一个新创建的对象实例。通常情况下,不需要重写__new__
方法,因为Python会自动调用object基类的__new__
方法来完成实例化过程。但如果你需要控制对象的创建过程,你可以重写__new__
方法。
2、__init__
方法:
__init__
是一个实例方法,用于初始化已创建的对象实例。当__new__
方法创建一个对象实例并返回后,__init__
方法才会立即被调用。它的主要任务是设置对象的属性和执行其他初始化操作。需要注意的是,__init__
方法必须接受一个表示对象实例本身的参数,通常命名为self
。通过self
参数,可以访问和修改对象的属性。
3、示例:
class Test(object):
def __new__(cls, *args, **kwargs):
print("start __new__")
instance = object.__new__(cls, *args, **kwargs)
return instance
def __init__(self, name, age):
print("start __init__")
self._name = name
self._age = age
p = Test("XiaoMing", 12)
输出结果:(先执行输出__new__
方法中的,之后才输出__init__
的)
start __new__
start __init__
总结
1、__new__
方法是静态方法,而__init__
是实例方法;
2、__new__
方法用于创建对象并返回对象,当返回对象时会自动调用__init__
方法进行初始化。