10_Python的继承
1.Python单继承
(1)继承的基本概念和基础语法
- Python的继承是指子类拥有父类的方法和属性。这样做的好处是实现代码的重用,以简化开发。
- Python是支持多继承的编程语言。
- 继承具有传递性。(A继承B,B继承C,那么A拥有父类和超类的方法和属性)
- 基本语法:
class ClassName(父类名):
...
(2)与继承相关的一些术语
- 基类
- 父类
- 子类
- 继承
- 派生
(3)单继承方法的重写(override)
- 如果子类完全不使用父类的该方法,可以直接重写。重写就是重新写一个与父类方法名一样的方法。
- 如果子类重写的方法想要使用父类的该方法作为它的一部分,可以使用
super().父类方法名
来扩展父类的方法。
(4)父类的私有属性和私有方法
- 子类对象不可以在方法内部直接访问父类对象的私有属性或私有方法。
- 子类对象可以通过父类的公有方法间接访问父类的私有属性或私有方法。
2.Python的多继承
(1)多继承概述及基本语法
Python可以实现多继承,也就是一个类继承自多个类,此时这个类就拥有多个类的属性和方法。
基本语法:
class 子类名(父类名1, 父类名2...):
pass
(2)多继承的注意事项
如果一个类的多个父类存在相同的方法名(属性名),那么当调用该方法时调用的是哪个父类的方法(属性)呢?首先开发时应该尽量避免这个问题,但是如果真的存在这个问题,调用的方法按以下机制:
Python的MRO Method resolution order
print(对象.__mro__) # 可以调用该函数查看搜索的顺序:
- 在搜索方法时,是按照
__mro__()
的输出结果从左至右的顺序查找的 - 如果在当前类中找到方法,就直接执行,不再搜索
- 如果没有找到,就查找下一个类中是否有对应的方法,如果找到,就直接执行,不再搜索
- 如果找到最后一个类,还没有找到方法,程序报错
(3)Python的新式类与经典类
- 新式类:以 object 为基类的类,推荐使用。
- 经典类:不以 object 为基类的类,不推荐使用。
- object 拥有着一些常用的属性和方法,可以查看一下。(类似于java的object类)
Python3.x 默认创建对象继承自新式类,即以Object类为父类。Python2.x如果没有指定父类则不是以Object为基类的。