黎子卿 发表于 2023-8-29 12:40:34

重写__new__方法

什么情况下Python中类的构造方法__new__方法需要重写。有什么要求?

isdkz 发表于 2023-8-29 12:41:08

在Python中,类的构造方法 __new__ 方法需要重写的情况是当你需要控制对象的创建过程时。通常情况下,我们使用 __init__ 方法来初始化对象的属性,但是 __new__ 方法在 __init__ 之前被调用,它负责创建对象并返回一个实例。

重写 __new__ 方法有以下几个要求:
1.__new__ 方法必须是一个类方法(使用 @classmethod 装饰器),因为它在对象实例化之前被调用,而此时还没有对象实例存在。
2.__new__ 方法必须返回一个类的实例。通常情况下,我们可以通过调用父类的 __new__ 方法来创建实例,然后进行一些额外的操作,最后返回实例。
3.__new__ 方法的第一个参数是类本身,接下来的参数是用于创建对象的参数。在重写 __new__ 方法时,我们可以自定义参数,但是第一个参数必须是 cls ,表示类本身。

需要注意的是,重写 __new__ 方法的情况比较少见,大部分情况下我们只需要重写 __init__ 方法来初始化对象的属性即可。只有在某些特殊的情况下,比如创建不可变对象或者控制对象的创建过程时,才需要重写 __new__ 方法。
页: [1]
查看完整版本: 重写__new__方法