python的super().__new__(cls)
时间: 2023-11-27 12:06:07 浏览: 45
`super().__new__(cls)` 是一个 Python 中用于继承父类的构造函数的特殊方法。当你在一个子类中定义 `__new__()` 方法时,如果你想要调用父类的构造函数来创建一个新的对象,就可以使用 `super().__new__(cls)`。
关于 `__new__()` 方法,它是 Python 中用于创建对象的特殊方法。当你创建一个新的对象时,Python 会调用类的 `__new__()` 方法来创建一个新的空对象,并将这个对象传递给类的 `__init__()` 方法来进行初始化。在继承中,`super().__new__(cls)` 能够让你调用父类的 `__new__()` 方法来创建一个新的对象,然后你就可以在子类中对这个新对象进行初始化。
相关问题
super.__new和object.__new的用法
super.__new和object.__new都是Python中的构造函数,用于创建新的实例对象。但是它们的用法有所不同。
object.__new__是Python中所有类的默认构造函数,它接受一个类作为参数,并返回一个新的实例对象。通常情况下,我们不需要重写它。
而super.__new__是用于继承中的构造函数,它接受两个参数:子类和子类的实例对象。它会调用父类的构造函数,并返回一个新的实例对象。通常情况下,我们需要在子类中重写它,以便在创建实例对象时调用父类的构造函数。
例如,假设我们有一个父类Animal和一个子类Dog,我们可以在Dog中重写super.__new__,以便在创建Dog实例对象时调用Animal的构造函数:
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __new__(cls, name):
print("Creating a new Dog instance")
return super().__new__(cls)
def __init__(self, name):
super().__init__(name)
d = Dog("Fido")
print(d.name)
输出结果为:
Creating a new Dog instance
Fido
super.__new怎么理解
super.__new 是 Python 中用于调用父类构造函数的方法。它可以在子类中使用,以便在创建子类对象时调用父类的构造函数。当我们调用 super().__new__(cls) 时,它会返回一个新的实例,并将该实例传递给子类的构造函数。这样,我们就可以在子类中访问父类的属性和方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)