python __new__和__init__的区别

简介

__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__方法进行初始化。

posted @   二月雪  阅读(322)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示