Python教程

Python之重写__init__()与__new__()方法时的注意事项

本文主要是介绍Python之重写__init__()与__new__()方法时的注意事项,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

__new__()
通常用于控制生成一个新实例的过程。它是类级别的方法。

在python中,真正创建实例的是__new__方法,这个方法是基于类的层面。
__new__()至少需要传递一个参数cls,cls表示需要实例化的类。
__new__()必须要有返回值,一般都是返回父类new方法出来的实例,即return super()__new__(cls)。
__new__()的返回值必须为当前类的实例时,__init__方法才会被调用。
如果(新式)类中没有重写__new__()方法,Python默认是调用该类的直接父类的__new__()方法来构造该类的实例,如果该类的父类也没有重写 __new__(),
那么将一直按此规矩追溯至object的__new__()方法,因为object是所有新式类的基类。
依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。

__init__()
__init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。

__init__()的第一个参数必须为self,用来接收__new__方法的返回值,即当前类实例。
__init__()的参数必须要和__new__参数保持一致。

这篇关于Python之重写__init__()与__new__()方法时的注意事项的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!