Python 面向对象——4.继承

本文介绍了Python面向对象编程中的基本概念,包括类、对象、继承、派生类、重写方法和方法解析顺序(MRO)。通过实例阐述了如何创建基类和派生类,以及如何通过`super()`调用父类的方法。
摘要由CSDN通过智能技术生成

本章学习链接如下:

Python 面向对象——1.基本概念

Python 面向对象——2.类与对象实例属性补充解释,self的作用等

Python 面向对象——3.实例方法,类方法与静态方法 

1.类的继承

类的继承是一种创建新类的方式,新类称为派生类(子类),继承自一个或多个基类(父类)。继承允许派生类(子类)获取基类(父类)的属性和方法,同时还可以定义自己的属性和方法。

(1)基本概念与操作

基类(父类):被继承的类。

派生类(子类):继承基类的类。

重写(Override):子类可以重写继承自父类的方法。

方法解析顺序(MRO):Python解释器用于查找对象属性和方法的顺序。

(2)基本语法

创建一个新类,在小括号里面写上父类的名称,调用父类的构造函数我们使用super().method(),子类可以继承父类的所有,因为他们本来就是包含关系,不如人按性别分分成男人和女人,那派生类男人肯定具有人的一切特征,除此之外,还有他的特殊特征:

class BaseClass:
    # 父类的方法和属性
    def method(self):
        pass

class DerivedClass(BaseClass):
    # 子类的方法和属性
    def method(self):
        super().method()  # 调用父类的方法
        # 子类特有的实现

 比如调用父类的构造函数我们可以写成:

# 定义基类 Vehicle
class Vehicle:
    def __init__(self, brand):
        self.brand = brand

    def start_engine(self):
        print(f"The {self.brand} engine has started.")

# 定义派生类 Car,继承自 Vehicle
class Car(Vehicle):
    def __init__(self, brand, model):
        super().__init__(brand)  # 调用父类的构造器
        self.model = model#子类自己新建的实例属性

(3)代码示例

假设我们有一个名为 Vehicle 的基类,它代表一个交通工具,然后我们创建两个派生类 CarBicycle,分别代表汽车和自行车。

  • Vehicle 是基类,定义了所有交通工具共有的属性和方法。
  • Car 和 Bicycle 是派生自 Vehicle 的子类,它们继承了 Vehicle 的属性和方法,但也定义了自己的构造器和 start_engine 方法。
  • 使用 super().__init__(brand) 来调用基类的构造器,确保子类实例能够正确地初始化继承的属性。
  • Car 类中的 start_engine 方法首先执行自己的逻辑,然后使用 super().start_engine() 调用基类的 start_engine 方法。
  • Bicycle 类中的 start_engine 方法则完全不同,因为自行车没有引擎。
# 定义基类 Vehicle
class Vehicle:
    def __init__(self, brand):
        self.brand = brand

    def start_engine(self):
        print(f"The {self.brand} engine has started.")

# 定义派生类 Car,继承自 Vehicle
class Car(Vehicle):
    def __init__(self, brand, model):
        super().__init__(brand)  # 调用父类的构造器
        self.model = model

    def start_engine(self):
        # 可以在这里添加额外的逻辑
        print(f"The {self.model} {self.brand} engine has started.")
        # 调用父类的方法
        super().start_engine()

# 定义另一个派生类 Bicycle,同样继承自 Vehicle
class Bicycle(Vehicle):
    def __init__(self, brand):
        super().__init__(brand)

    def start_engine(self):
        # 自行车没有引擎,所以这里的方法会有所不同
        print(f"The {self.brand} bicycle is ready to pedal.")

# 创建对象
my_car = Car("Tesla", "Model 3")
my_bicycle = Bicycle("Trek")

# 调用方法
my_car.start_engine()  # 输出: The Model 3 Tesla engine has started.
                      #       The Tesla engine has started.
my_bicycle.start_engine()  # 输出: The Trek bicycle is ready to pedal.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林采采学编程+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值