Python中new()和init()方法的执行顺序
发布时间:2023-12-25 08:33:05
在 Python 中,__new__() 和 __init__() 是用来创建对象的特殊方法。__new__() 方法在对象创建之前调用,通过该方法创建对象并返回一个实例。__init__() 方法在对象创建之后调用,用于初始化该实例的属性。
首先,让我们看一个简单的例子来说明 __new__() 和 __init__() 方法的执行顺序:
class MyClass:
def __new__(cls):
print("__new__() called")
return super().__new__(cls)
def __init__(self):
print("__init__() called")
obj = MyClass()
输出结果为:
__new__() called __init__() called
从输出结果可以看出,__new__() 方法在 __init__() 方法之前被调用。
在这个例子中,__new__() 方法创建了一个新的对象,并返回该对象的实例。在此之后,__init__() 方法被调用以初始化该实例。
接下来,让我们看一个更复杂的例子,使用参数来演示 __new__() 和 __init__() 方法的执行顺序。在这个例子中,我们将传递一个参数来初始化属性:
class Person:
def __new__(cls, name):
print("__new__() called")
return super().__new__(cls)
def __init__(self, name):
self.name = name
print("__init__() called")
person = Person("Alice")
输出结果为:
__new__() called __init__() called
同样地,__new__() 方法在 __init__() 方法之前被调用。
在这个例子中,__new__() 方法接收一个参数 name 并使用 super().__new__(cls) 创建一个新的对象。接着,__init__() 方法接收同样的参数 name 并将其赋值为实例的属性。
总结一下,__new__() 方法在创建对象之前被调用,用于创建对象并返回实例。__init__() 方法在创建对象之后被调用,用于初始化属性。
