📜  Python的继承(1)

📅  最后修改于: 2023-12-03 15:34:31.366000             🧑  作者: Mango

Python的继承

在Python中,继承是面向对象编程的一个重要特性。继承指的是一个类可以从另一个类中继承属性和方法。这有助于避免代码重复,提高代码复用性和可维护性。

继承的语法

Python中继承的语法如下所示:

class BaseClass:
    # 基类/父类/超类
    pass

class DerivedClass(BaseClass):
    # 派生类/子类
    pass

其中,BaseClass是基类/父类/超类,DerivedClass为派生类/子类。在括号中写上要继承的基类的名称即可实现继承。

继承的基本概念
  • 子类: 继承父类属性和方法的新类。
  • 父类: 提供被继承的属性和方法的类。
  • 覆盖: 在子类中重新定义父类中已经存在的方法或属性。
  • 派生: 通过继承创建子类的过程。
继承的优点
  • 代码重用:可以避免重复编写相同的代码,提高代码复用性。
  • 程序设计的灵活性:派生类可以重新定义或增加父类的方法和属性,从而增强程序的灵活性和可扩展性。
  • 提高程序的可维护性:通过继承,当父类需要修改或更新时,子类会自动继承这些变化,从而减少了维护的工作量。
继承的类型
  • 单继承: 同一个子类只能继承自一个父类。
  • 多继承:子类同时继承多个父类。
继承的注意事项
  • 如果子类和父类都定义了同名的方法或属性,子类中的方法或属性会覆盖父类的方法或属性。
  • 继承的层次过多(不应超过3层)会导致程序的复杂度增加,因此需要谨慎使用。
示例代码
class Animal:
    def __init__(self, name):
        self.name = name

    def move(self):
        print(f"{self.name} can move.")

class Dog(Animal):
    def __init__(self, name):
        super().__init__(name)

    def bark(self):
        print(f"{self.name} can bark.")


class Bird(Animal):
    def __init__(self, name):
        super().__init__(name)

    def fly(self):
        print(f"{self.name} can fly.")

class Penguin(Bird):
    def __init__(self, name):
        super().__init__(name)

    def fly(self):
        print(f"{self.name} cannot fly.")

if __name__ == '__main__':
    dog = Dog("Snoopy")
    bird = Bird("Tweety")
    penguin = Penguin("Pingu")
    
    dog.move()
    dog.bark()
    
    bird.move()
    bird.fly()
    
    penguin.move()
    penguin.fly()

输出结果为:

Snoopy can move.
Snoopy can bark.
Tweety can move.
Tweety can fly.
Pingu can move.
Pingu cannot fly.

在这个示例代码中,我们定义了一个父类Animal,它包含一个move方法。然后,我们定义了两个子类DogBird,它们分别继承了Animal类,并分别新增了一个bark和一个fly方法。最后,我们定义了一个Penguin类,它继承了Bird类,并重写了fly方法。在程序运行时,我们创建了一个Dog对象,一个Bird对象和一个Penguin对象,它们分别调用了它们自己的方法。