Python 构造函数的继承89


在 Python 中,构造函数是当类被实例化时调用的特殊方法。它负责初始化类的属性并设置对象的初始状态。当一个子类从基类继承时,它可以继承基类的构造函数,也可以覆盖它以定义自己的构造函数行为。

构造函数继承

当子类从基类继承时,它会自动继承基类的构造函数。这意味着子类的实例化将调用基类的构造函数,并将参数传递给基类的构造函数。例如,考虑以下代码:```python
class Base:
def __init__(self, name):
= name
class Child(Base):
pass
child = Child("Python")
```

在上面的示例中,Child 从 Base 继承,并且它没有定义自己的构造函数。因此,当实例化 Child 时,它将调用 Base 的构造函数并将参数 "Python" 传递给它,导致 child 的 name 属性被设置为 "Python"。

覆盖构造函数

子类还可以覆盖基类的构造函数以定义自己的构造函数行为。这意味着子类将有自己的构造函数,它将替换基类的构造函数。例如,考虑以下代码:```python
class Base:
def __init__(self, name):
= name
class Child(Base):
def __init__(self, name, age):
super().__init__(name)
= age
child = Child("Python", 20)
```

在上面的示例中,Child 覆盖了 Base 的构造函数。这意味着当实例化 Child 时,它将调用 Child 的构造函数,该构造函数接受两个参数:name 和 age。 Child 的构造函数首先调用 super().__init__(name),这将调用 Base 的构造函数并将 name 参数传递给它。然后,它将 age 参数分配给 age 属性。结果,child 的 name 属性将设置为 "Python",age 属性将设置为 20。

调用基类构造函数

当子类覆盖构造函数时,它可以使用 super() 函数显式调用基类的构造函数。这允许子类访问基类的构造函数并传递参数。例如,考虑以下代码:```python
class Base:
def __init__(self, name):
= name
class Child(Base):
def __init__(self, name, age):
super().__init__(name)
= age
child = Child("Python", 20)
print() # Python
print() # 20
```

在上面的示例中,Child 的构造函数调用 super().__init__(name),这将调用 Base 的构造函数并将 name 参数传递给它。然后,它将 age 参数分配给 age 属性。结果,child 的 name 属性将设置为 "Python",age 属性将设置为 20。

在 Python 中,构造函数继承允许子类继承基类的构造函数行为或覆盖它以定义自己的行为。子类可以使用 super() 函数显式调用基类的构造函数。通过理解构造函数继承,您可以创建具有更复杂初始化逻辑且组织良好的面向对象程序。

2024-10-28


上一篇:Python 从文件中删除行

下一篇:Python 中从文件中删除特定行