qiuyiyang0521 发表于 2022-7-29 10:34:55

求助于python类的魔法方法__new__

我刚刚学习完python的魔法方法,对其中的__new__方法不是很理解,
特别是它和__init__方法的关系,以及它的应用,求解!

本人刚刚注册用户没几天,连五个鱼币都没有,无法给予奖赏,
请见谅。

ZhKQYu 发表于 2022-7-29 11:17:29

在python的面向对象里面,一般用不到__new__方法,一般只能用到__init__方法,__init__里面的参数是有一个self,说明其是一个实例方法,虽然我们叫__init__是构造方法,但是实际上__new__方法是先于__init__被调用的,__new__将实例创建好之后,要把其实例对象本身以及相关参数传递给__init__,之后再去实现其他功能。而且__new__必须有返回值,这个返回值就是对象本身,用于传递给__init__方法。至于什么时候用__new__什么时候用__init__,当我们需要重新定义不可变的数据类的时候,就用到__new__方法,当然还是得具体问题具体分析。

ZhKQYu 发表于 2022-7-29 11:18:48

ZhKQYu 发表于 2022-7-29 11:17
在python的面向对象里面,一般用不到__new__方法,一般只能用到__init__方法,__init__里面的参数是有一个s ...

__new__方法是静态方法,但是不需要使用装饰器,他还必须传入一个参数cls,当然你要理解成我类方法也行
页: [1]
查看完整版本: 求助于python类的魔法方法__new__