仅用学习参考

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

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

super().父类方法 来调用父类方法的执行super Python 中 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