__new__()方法详解:Python对象创建揭秘

0 下载量 112 浏览量 更新于2023-05-11 收藏 38KB PDF 举报
"本文详细讲解了Python中的`__new__()`方法,它是Python类创建过程中的重要组成部分。在Python2.x中,`__new__()`是类的一个特殊方法,它在实例化新对象时被调用,通常在`__init__()`方法之前。`__new__()`方法的主要职责是在创建新对象之前进行必要的设置,比如设置对象的状态或元数据,但它的核心任务是返回一个新的对象实例。 `__new__()`方法的第一个参数`cls`代表需要实例化的类,Python解释器会在实例化过程中自动提供。它是一个静态方法,这意味着你可以直接调用`Demo.__new__(...)`而无需创建Demo的实例。这个方法接受任意数量的位置参数`*args`和关键字参数`**kwargs`,这些参数可以在子类中根据需要处理。 在`Demo`类的例子中,`__new__()`首先打印出调用的类名,然后利用`object.__new__(cls, *args, **kwargs)`调用父类`object`的`__new__()`方法来创建新对象。这个方法的返回值就是新创建的对象实例,它会被传递给`__init__()`方法作为`self`参数。 `__init__()`方法则负责对新创建的对象进行初始化,例如设置属性、执行特定操作等。在`Demo`类中,`__init__()`会在`__new__()`之后被调用,打印出'__init__() called'。 如果`__new__()`没有正确地返回一个新对象,那么`__init__()`将不会被执行,即使返回的是父类的实例也不行。这体现了类的继承机制:只有当新对象被成功创建后,后续的初始化步骤才会被执行。 `__new__()`方法在Python类的生命周期中扮演着关键角色,它控制着对象的创建过程,而`__init__()`则负责对象的具体初始化。理解这两个方法的协作对于编写高效、可扩展的Python代码至关重要。"