鱼C论坛

 找回密码
 立即注册
查看: 1059|回复: 6

[已解决]类实例化成对象调用的第一个函数

[复制链接]
发表于 2020-5-30 21:59:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1590847062(1).jpg

类实例化成对象调用的第一个函数到底是__new__还是__init___,傻傻分不清。。。
最佳答案
2020-5-30 22:07:04
jump_p 发表于 2020-5-30 22:05
那为啥通常没有调用new,而是直接def__init__这样,def__init__可以直接实例化对象吗?

因为类对象如果没有特别指名继承哪个类的话,默认都是继承 object ,而 object 类有默认的 __new__方法,所以不需要你自己def
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 22:00:16 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-30 22:04 编辑

第一个调用的是__new__,调用后将实例化对象返回给__init__,而__init__是实例化对象后立刻被调用

还有 __new__ 主要负责对象的创建,而 __init__ 主要负责对象的初始化

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-30 22:01:17 | 显示全部楼层
楼上正解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 22:05:42 | 显示全部楼层
Twilight6 发表于 2020-5-30 22:00
第一个调用的是__new__,调用后将实例化对象返回给__init__,而__init__是实例化对象后立刻被调用

还有  ...

那为啥通常没有调用new,而是直接def__init__这样,def__init__可以直接实例化对象吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 22:07:04 | 显示全部楼层    本楼为最佳答案   
jump_p 发表于 2020-5-30 22:05
那为啥通常没有调用new,而是直接def__init__这样,def__init__可以直接实例化对象吗?

因为类对象如果没有特别指名继承哪个类的话,默认都是继承 object ,而 object 类有默认的 __new__方法,所以不需要你自己def
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 22:12:24 | 显示全部楼层
Twilight6 发表于 2020-5-30 22:07
因为类对象如果没有特别指名继承哪个类的话,默认都是继承 object ,而 object 类有默认的 __new__方法, ...

感谢,你回复也太及时了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 22:18:50 | 显示全部楼层
jump_p 发表于 2020-5-30 22:12
感谢,你回复也太及时了吧

能帮助到你就好~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 22:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表