前言
系列文章目录
视频及资料和课件
链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234
提取码:1234
视频链接
根据视频进行整理
目标
- 继承的概念
- 单继承
- 多继承
- 子类重写父类的同名属性和方法
- 子类调用父类的同名属性和方法
- 多层继承
- super()
- 私有属性和私有方法
1 继承
1.1 继承的概念
在日常生活中,继承,即子代继承父代的财产。
在面向对象编程中,继承,即子类继承父类的属性与方法。
因此,即使子类中没有任何属性与方法,只要继承了父类,就可以拥有父类的属性与方法。
继承的作用:可以简化代码。
1.2 (拓展)经典类和新式类
在python中,不同版本的解释器下,类默认有两种执行方式,一种按照经典类执行,一种按照新式类执行。
现在,使用的python解释器版本基本为3.0。
在python2.0版本的解释器下,类的执行默认按照经典类的方式执行:
class 类名: 代码 ......
在python3.0版本的解释器下,类的执行默认按照新式类的方式执行:
一个类如果没有继承其他类,会默认继承一个所有类的顶级类,object。
没有写继承的类,在括号中无论是否有写object,都会默认继承object。
object,也称为基类。
class 类名(object): 代码 ......
在以后书写类的代码,一般都写成新式类的形式。
类名后面的括号中写要继承的类。
1.3 体验继承
Python面向对象的继承指的是多个类之间的所属关系,即子类默认基础父类的所有属性和方法。
继承的作用:简化代码的书写。
不同的类拥有相同的属性和方法,可以使用继承来简化代码的书写。
在Python中,所有类默认继承object类,object类是顶级类或基类,其他的类叫做派生类。
由于object类之外的其他类,要么继承其他类,要么默认继承object类,即其他类都派生于某个类,所以object类之外的其他类叫做派生类。
# 父类 # 也可以写成:class A(): # 因为没有指定继承的类,会默认继承object类 class A(object): def __init__(self): self.num = 1 def print_info(self): print(self.num) # 子类 class B(A): pass b = B() b.print_info()
由于B继承A,所以B会拥有A的所有方法,在实例化B类的对象b时,会自动调用从A类继承过来的
__init__()
方法,初始化实例的对象b。由于继承了所有方法,实例化的对象b也可以调用
print_info()
方法。
2 单继承
单继承,即一个父类被一个子类继承,一个子类继承一个父类。
场景:一位老师傅要将其煎饼果子的配方传授给其徒弟。
# 师傅类 class Master(object): def __init__(self): self.kongfu = '[古法煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子') # 徒弟类 class Prentice(Master): pass # 实例化徒弟对象 prentice = Prentice() # 徒弟使用从师傅那继承的配方制作煎饼果子 prentice.make_cake()
3 多继承
假设上述例子中徒弟的姓名为大邱,大邱在继承煎饼果子配方后,还想学习编程技术,于是报班学习编程技术。
于是,大邱不仅从师傅那继承了煎饼果子的配方,还从培训班那学习到了编程技术。
多继承,即一个类同时继承多个父类。
注意:
当一个类有多个父类的时候,默认使用
第一个
父类的同名属性和方法。
# 师傅类 class Master(object): def __init__(self): self.kongfu = '[古法煎饼果子配方]' def make_cake(self): print(f'运用{self.kongfu}制作煎饼果子') # 培训机构 class School(object): def __init__(self): self.kongfu = '[Python]' def make_cake(self): print(f'运用{self.kongfu}编写程序来制作煎饼果子') # 徒弟类 class Prentice(School, Master): pass # 实例化徒弟对象 prentice = Prentice() # 制作煎饼果子 prentice.make_cake()