Python函数__new__及__init__作用及区别解析
时间: 2023-10-26 18:06:41 浏览: 87
浅谈python中的__init__、__new__和__call__方法
5星 · 资源好评率100%
在 Python 中,`__new__` 和 `__init__` 都是用于构造对象的特殊方法。它们有一些共同点,但也有一些重要的区别。
`__new__` 方法是用于创建一个类的实例对象的。它是一个类方法,第一个参数是类本身。这个方法返回一个新的对象,这个对象将被传递给 `__init__` 方法。
`__init__` 方法则是用于初始化对象的。它是一个实例方法,第一个参数是实例对象本身。这个方法可以用来设置实例的属性和其他操作。
区别:
1. `__new__` 方法返回一个新的实例对象,而 `__init__` 方法初始化这个实例对象。
2. `__new__` 方法是一个类方法,而 `__init__` 方法是一个实例方法。
3. `__new__` 方法的第一个参数是类本身,而 `__init__` 方法的第一个参数是实例对象本身。
4. `__new__` 方法必须返回一个实例对象,而 `__init__` 方法不需要返回任何值。
在一般情况下,我们不需要重写 `__new__` 方法,因为 Python 提供了默认的 `__new__` 实现。但是在某些情况下,比如自定义元类时,可能需要重写 `__new__` 方法。而 `__init__` 方法则是常规的初始化方法,我们在创建类时通常都要定义它。
阅读全文