python构造器可以重写吗
时间: 2023-07-22 09:24:34 浏览: 104
在Python中,构造器是一种特殊的方法(函数),通常称为 `__init__` 方法。构造器用于在对象创建时初始化对象的属性。在Python中,构造器可以被重写,即在子类中重新定义一个与父类相同名称的构造器方法,从而覆盖父类的构造器。
当一个类的子类重新定义了构造器方法时,Python会首先调用子类的构造器方法,然后再调用父类的构造器方法。这样可以保证子类对象的初始化按照正确的顺序进行。
以下是一个示例,演示了如何在子类中重写父类的构造器方法:
```python
class Animal:
def __init__(self, name):
self.name = name
print("Animal constructor called")
class Dog(Animal):
def __init__(self, name, breed):
self.breed = breed
super().__init__(name)
print("Dog constructor called")
my_dog = Dog("Buddy", "Labrador")
```
在上面的示例中,我们定义了一个 `Animal` 类和一个 `Dog` 类,其中 `Dog` 类继承自 `Animal` 类。`Animal` 类的构造器方法接受一个参数 `name`,用于初始化动物的名称。`Dog` 类的构造器方法接受两个参数 `name` 和 `breed`,用于初始化狗的名称和品种。在 `Dog` 类的构造器方法中,我们首先调用父类的构造器方法,即 `super().__init__(name)`,然后初始化狗的品种属性。
当我们创建一个 `Dog` 对象时,Python会首先调用子类的构造器方法 `__init__`,然后再调用父类的构造器方法 `__init__`。因此,上面的代码会依次输出以下内容:
```
Animal constructor called
Dog constructor called
```
总之,Python中的构造器方法可以被重写,子类可以在构造器方法中调用父类的构造器方法,以初始化继承自父类的属性。
阅读全文