init()方法和new方法

本文深入解析Python中的__init__和__new__方法,探讨它们在对象创建和初始化过程中的角色和区别,通过实例代码展示其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python中的init()方法和new方法

首先我们来了解一下init()方法,init()是一个实例方法,init()内置方法在创建对象的时候自动执行无返回值,我们可以在init()做一些初始化操作,接下来用代码来了解一下它的作用

class Person:
    def __init__(self,name):
        print("我是初始化方法")
        self.name=name   #实例属性
        self.age=20
    def person(self):
        print("大家好,我叫{},我今年{}岁,祝大家开心每一天".format(self.name,self.age))
per=Person("snowdream")
per.person()

结果:
在这里插入图片描述
通过以上代码我们发现在创建对象的时候init()方法就自动执行了,并且把实例属性在各自对象的内存中都保存一份,描述类创建出来的实例化对象。
接下来我们再了解一下new方法,__new__是一个静态方法,__new__方法会返回一个创建的实例,作用就是实例化对象,其中实例化对象是Object类底层实现,其它类继承了Object的new才能够实现 实例化对象。 我们用代码来来了解一下

class Dog(object):
    def __new__(cls, *args, **kwargs):
        print("----__new__----")
        new__=object.__new__(cls)
        return new__
dog=Dog()
print(dog)

结果:
在这里插入图片描述
由上可以看出调用父类new方法,创建当前对象
说到这里那__new__和__init__到底有啥关系不妨我们看一下代码

class Dog(object):
    def __init__(self):
        print("----__init__---")
    def __del__(self):
        print("----__del__----")
    def __new__(cls, *args, **kwargs):
        print("----__new__----")
        new__=object.__new__(cls)
        return new__
dog=Dog()
print(dog)

结果:
在这里插入图片描述
由上可以看出来调用父类的__new__方法就可以创建对象,返回一个cls的实例传递__init__方法,这时__init__才能被调用,__init__接下来完成初始化操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值