如果派生类继承自多个父类,且父类里面有多个不相同的参数,那么__init__后面的括号里该怎么填?
时间: 2024-03-21 16:40:40 浏览: 54
如果派生类继承自多个父类,且父类里面有多个不相同的参数,那么在子类的构造函数中,需要分别调用每个父类的构造函数,并传入相应的参数。可以使用 `super()` 函数来调用父类的构造函数,并根据需要传入参数。
假设有如下的三个父类:
```
class A:
def __init__(self, a):
self.a = a
print("A.__init__")
class B:
def __init__(self, b):
self.b = b
print("B.__init__")
class C:
def __init__(self, c):
self.c = c
print("C.__init__")
```
如果派生类 `D` 继承自这三个父类,且每个父类的构造函数有不同的参数,那么可以按照如下方式实现子类的构造函数:
```
class D(A, B, C):
def __init__(self, a, b, c):
A.__init__(self, a)
B.__init__(self, b)
C.__init__(self, c)
print("D.__init__")
```
在子类 `D` 的构造函数中,分别调用了父类 `A`、`B`、`C` 的构造函数,并传入了相应的参数。这样就能正确地初始化所有父类和子类的属性。
如果想要使用 `super()` 函数来调用父类的构造函数,可以按照以下方式实现:
```
class D(A, B, C):
def __init__(self, a, b, c):
super().__init__(a)
super(B, self).__init__(b)
super(C, self).__init__(c)
print("D.__init__")
```
在这个例子中,首先调用了父类 `A` 的构造函数,然后通过 `super(B, self).__init__(b)` 调用了父类 `B` 的构造函数,最后通过 `super(C, self).__init__(c)` 调用了父类 `C` 的构造函数。这样就能正确地初始化所有父类和子类的属性。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.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)