python中__init__和__new__方法的使用

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 python中__init__和__new__方法的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、__new__方法默认返回实例对象供__init__方法、实例方法使用。
2、__init__方法为初始化方法,为类的实例提供一些属性或完成一些动作。
3、__new__方法创建实例对象供__init__方法使用,__init__方法定制实例对象。
__new__方法必须返回值,__init__方法不需要返回值。(如果返回非None值就报错)
4、对象的创建和初始化过程示意图
在这里插入图片描述
5、执行流程:
a、创建Person类的对象student=Person(‘kb’,19),先执行等号右边的内容Person(‘kb’,19)
b、调用Person类中的__new__方法,并将Person类传给方法中的cls
c、创建obj对象
d、执行__init__方法,并将obj对象赋值给self
e、将self再传给student1对象

6、我们比较两个方法的参数,可以发现__new__方法是传入类(cls),而__init__方法传入类的实例化对象(self),而有意思的是,__new__方法返回的值就是一个实例化对象(ps:如果__new__方法返回None,则__init__方法不会被执行,并且返回值只能调用父类中的__new__方法,而不能调用毫无关系的类的__new__方法)。
我们可以这么理解它们之间的关系,__new__是开辟疆域的大将军,而__init__是在这片疆域上辛勤劳作的小老百姓,只有__new__执行完后,开辟好疆域后,__init__才能工作,结合到代码,也就是__new__的返回值正是__init__中self。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123625.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!