当前位置:   article > 正文

Python 面向对象——4.继承

Python 面向对象——4.继承

本章学习链接如下:

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

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

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

1.类的继承

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

(1)基本概念与操作

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

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

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

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

(2)基本语法

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

  1. class BaseClass:
  2. # 父类的方法和属性
  3. def method(self):
  4. pass
  5. class DerivedClass(BaseClass):
  6. # 子类的方法和属性
  7. def method(self):
  8. super().method() # 调用父类的方法
  9. # 子类特有的实现
'
运行

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

  1. # 定义基类 Vehicle
  2. class Vehicle:
  3. def __init__(self, brand):
  4. self.brand = brand
  5. def start_engine(self):
  6. print(f"The {self.brand} engine has started.")
  7. # 定义派生类 Car,继承自 Vehicle
  8. class Car(Vehicle):
  9. def __init__(self, brand, model):
  10. super().__init__(brand) # 调用父类的构造器
  11. 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 方法则完全不同,因为自行车没有引擎。
  1. # 定义基类 Vehicle
  2. class Vehicle:
  3. def __init__(self, brand):
  4. self.brand = brand
  5. def start_engine(self):
  6. print(f"The {self.brand} engine has started.")
  7. # 定义派生类 Car,继承自 Vehicle
  8. class Car(Vehicle):
  9. def __init__(self, brand, model):
  10. super().__init__(brand) # 调用父类的构造器
  11. self.model = model
  12. def start_engine(self):
  13. # 可以在这里添加额外的逻辑
  14. print(f"The {self.model} {self.brand} engine has started.")
  15. # 调用父类的方法
  16. super().start_engine()
  17. # 定义另一个派生类 Bicycle,同样继承自 Vehicle
  18. class Bicycle(Vehicle):
  19. def __init__(self, brand):
  20. super().__init__(brand)
  21. def start_engine(self):
  22. # 自行车没有引擎,所以这里的方法会有所不同
  23. print(f"The {self.brand} bicycle is ready to pedal.")
  24. # 创建对象
  25. my_car = Car("Tesla", "Model 3")
  26. my_bicycle = Bicycle("Trek")
  27. # 调用方法
  28. my_car.start_engine() # 输出: The Model 3 Tesla engine has started.
  29. # The Tesla engine has started.
  30. my_bicycle.start_engine() # 输出: The Trek bicycle is ready to pedal.
'
运行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/913403
推荐阅读
相关标签
  

闽ICP备14008679号