面向对象三大特性
继承的概念:子类 拥有 父类 的所有 方法 和 属性

class 类名(父类名):
pass
Dog 类是 Animal 类的子类,Animal 类是 Dog 类的父类,Dog 类从 Animal 类继承Dog 类是 Animal 类的派生类,Animal 类是 Dog 类的基类,Dog 类从 Animal 类派生C 类从 B 类继承,B 类又从 A 类继承C 类就具有 B 类和 A 类的所有属性和方法子类 拥有 父类 以及 父类的父类 中封装的所有 属性 和 方法
提问
哮天犬 能够调用 Cat 类中定义的 catch 方法吗?
答案
不能,因为 哮天犬 和 Cat 之间没有 继承 关系
应用场景

重写 父类方法有两种情况:
具体的实现方式,就相当于在 子类中 定义了一个 和父类同名的方法并且实现
重写之后,在运行时,只会调用 子类中重写的方法,而不再会调用 父类封装的方法
super().父类方法 来调用父类方法的执行superPython 中 super 是一个 特殊的类super() 就是使用 super 类创建出来的对象在
Python 2.x时,如果需要调用父类的方法,还可以使用以下方式:
父类名.方法(self)
Python 3.x 还支持这种方式提示
父类名 和 super() 两种方式不要混用
- 私有属性、方法 是对象的隐私,不对外公开,外界 以及 子类 都不能直接访问
- 私有属性、方法 通常用于做一些内部的事情
示例

B 的对象不能直接访问 __num2 属性B 的对象不能在 demo 方法内访问 __num2 属性B 的对象可以在 demo 方法内,调用父类的 test 方法test 方法内部,能够访问 __num2 属性和 __test 方法概念

语法
class 子类名(父类名1, 父类名2...)
pass
问题的提出
提示:开发时,应该尽量避免这种容易产生混淆的情况! —— 如果 父类之间 存在 同名的属性或者方法,应该 尽量避免 使用多继承

Python 中针对 类 提供了一个 内置属性 __mro__ 可以查看 方法 搜索顺序method resolution order,主要用于 在多继承时判断 方法、属性 的调用 路径print(C.__mro__)
输出结果
(<class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘__main__.B‘>, <class ‘object‘>)
__mro__ 的输出结果 从左至右 的顺序查找的
object是Python为所有对象提供的 基类,提供有一些内置的属性和方法,可以使用dir函数查看
object 为基类的类,推荐使用经典类:不以 object 为基类的类,不推荐使用
在 Python 3.x 中定义类时,如果没有指定父类,会 默认使用 object 作为该类的 基类 —— Python 3.x 中定义的类都是 新式类
在 Python 2.x 中定义类时,如果没有指定父类,则不会以 object 作为 基类
新式类 和 经典类 在多继承时 —— 会影响到方法的搜索顺序
为了保证编写的代码能够同时在 Python 2.x 和 Python 3.x 运行!
今后在定义类时,如果没有父类,建议统一继承自 object
class 类名(object):
pass
原文:https://www.cnblogs.com/yzg-14/p/12185297.html