jump_p 发表于 2020-5-30 21:59:08

类实例化成对象调用的第一个函数



类实例化成对象调用的第一个函数到底是__new__还是__init___,傻傻分不清。。。

Twilight6 发表于 2020-5-30 22:00:16

本帖最后由 Twilight6 于 2020-5-30 22:04 编辑

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

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

永恒的蓝色梦想 发表于 2020-5-30 22:01:17

楼上正解。

jump_p 发表于 2020-5-30 22:05:42

Twilight6 发表于 2020-5-30 22:00
第一个调用的是__new__,调用后将实例化对象返回给__init__,而__init__是实例化对象后立刻被调用

还有...

那为啥通常没有调用new,而是直接def__init__这样,def__init__可以直接实例化对象吗?

Twilight6 发表于 2020-5-30 22:07:04

jump_p 发表于 2020-5-30 22:05
那为啥通常没有调用new,而是直接def__init__这样,def__init__可以直接实例化对象吗?

因为类对象如果没有特别指名继承哪个类的话,默认都是继承 object ,而 object 类有默认的 __new__方法,所以不需要你自己def

jump_p 发表于 2020-5-30 22:12:24

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

{:7_123:}感谢,你回复也太及时了吧

Twilight6 发表于 2020-5-30 22:18:50

jump_p 发表于 2020-5-30 22:12
感谢,你回复也太及时了吧

{:10_297:}能帮助到你就好~
页: [1]
查看完整版本: 类实例化成对象调用的第一个函数