『无为则无心』Python面向对象 — 53、对Python中封装的介绍
2022-02-24 11:06
671 查看
[toc]
1、继承的概念
在Python中,如果两个类存在父子级别的继承关系,子类中即便没有任何属性和方法,此时创建一个子类对象,那么这个子类对象会拥有父类中所有属性和方法的使用权,这就是在Python中的继承概念。
在Python测继承中,我们一般会抽取出一类事物中,所具有相同的特征属性和行为到一个类中,这样的类我们称之为父类,也可以叫超类、基类。
凡是通过继承创建出来的类,我们称之为子类或者衍生类,可以直接继承父类中的属性和方法。
2、继承的好处
- 继承最大的作用就是简化代码,提高了代码的复用性,提高软件开发效率。
- 继承的出现让类与类之间产生了关系,提供了多态的前提。
3、继承体验
Python面向对象的继承指的是多个类之间的所属关系,即子类默认继承父类的所有属性和方法,具体如下:
# 继承:子类默认继承父类的所有属性和方法 # 1. 定义父类Parent class Parent(object): def __init__(self): self.num = 1 def info_print(self): print(self.num) # 2. 定义子类Child 继承父类Parent class Child(Parent): pass # 创建Child类实例,调用父类Parent中的方法和属性 ch = Child() print(ch.num) # 1 ch.info_print() # 1
说明:在Python中,所有类默认继承
object类,object类是顶级类或基类,其他子类都是object的派生类。
4、单继承
单继承:一个父类只被一个子类继承,就叫做单继承。
故事主线:一个煎饼果子老师傅,在煎饼果子界摸爬滚打多年,研发了一套精湛的摊煎饼果子的技术。师父要把这套技术传授给他的唯一的最得意的徒弟。
# 1. 师父类,属性和方法 class Master(object): def __init__(self): self.gongfu = '[古法煎饼果子配方]' def make_cake(self): print(f'运用{self.gongfu}制作煎饼果子') # 2. 定义徒弟类,继承师父类 class Prentice(Master): pass # 3. 创建对象tudi tudi = Prentice() # 4. 对象访问实例属性 print(tudi.gongfu) # [古法煎饼果子配方] # 5. 对象调用实例方法 tudi.make_cake() # 运用[古法煎饼果子配方]制作煎饼果子
5、多继承
故事推进:徒弟是个爱学习的好孩子,想学习更多的煎饼果子技术,于是搜索到学院派煎饼果子,决定学院学习更多的煎饼果子技术。
所谓多继承意思就是一个类同时继承了多个父类。
# 1.创建师父类,属性和方法 class Master(object): def __init__(self): self.gongfu = '[古法煎饼果子配方]' def make_cake(self): print(f'运用{self.gongfu}制作煎饼果子') # 2.创建学院派类 属性和方法 class School(object): def __init__(self): self.gongfu = '[学院派煎饼果子配方]' def make_cake(self): print(f'运用{self.gongfu}制作煎饼果子') # 2. 定义徒弟类,继承师父类 和 宗师类 class Prentice(School, Master):pass # 3. 创建对象tudi tudi = Prentice() # 4. 对象访问实例属性 print(tudi.gongfu) # 5. 对象调用实例方法 tudi.make_cake() """ 输出内容: [学院派煎饼果子配方] 运用[学院派煎饼果子配方]制作煎饼果子 """
总结:
- 在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类,如:
class Prentice(School, Master):
- 多重继承,会使子类同时拥有多个父类,并且会获取到所有父类中的属性和方法。
- 如果多个父类中有同名的方法,则会现在第一个父类中寻找,然后找第二个,然后找第三个,以此类推。 (在详细唠叨一下,找第一个类,然后找这个类的父类,如果没有在开始找第二个类,然后第二个类如果有父类,再找第二个类的父类,以此类推,如有重复的父类,之前找过的类,不重复查找。) 也就是如果一个类继承多个父类,优先继承第一个父类的同名属性和方法。
- 在开发中没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂。
相关文章推荐
- 『无为则无心』Python面向对象 — 54、重写和super()函数
- Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库
- python面向对象之封装
- Python学习之面向对象(封装、继承、多态)
- python的面向对象的特性(继承、封装、多态)
- python 面向对象三大特性(封装 多态 继承)
- 初学Python的学习笔记8----面向对象、数据封装、访问限制、继承和多态
- python面向对象之封装
- python面向对象(二)之封装
- Python(十三)面向对象 -封装
- Python基础(面向对象之封装与继承)
- python学习笔记:面向对象三大特征介绍
- Python面向对象之封装、property特性、绑定方法与非绑定方法
- 自学Python5.7-面向对象三大基本特征_封装
- python 面向对象之封装
- python面向对象(二)之封装
- python_面向对象三大特征之封装
- python-面向对象精髓-组合-封装
- python3全栈开发-面向对象的三大特性(继承,多态,封装)之继承
- Python基础知识:面向对象(封装、继承、多态)1