Python趣味基础系列

Python 继承

2018-12-30  本文已影响32人  Devops海洋的渔夫

仅用学习参考

目标

后面的继承跟着动

面向对象三大特性

  1. 封装 根据 职责属性方法 封装 到一个抽象的
  2. 继承 实现代码的重用,相同的代码不需要重复的编写
  3. 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

01. 单继承

1.1 继承的概念、语法和特点

继承的概念子类 拥有 父类 的所有 方法属性

经典动物类继承

1) 继承的语法

class 类名(父类名):

    pass

class Child(Father):
   
    pass
  1. 覆盖 父类的方法
  2. 对父类方法进行 扩展

1) 覆盖父类的方法

  1. 在子类中 重写 父类的方法

  2. 在需要的位置使用 super().父类方法 来调用父类方法的执行

  3. 代码其他的位置针对子类的需求,编写 子类特有的代码实现

关于 super
  父类名.方法(self)

1.3 父类的 私有属性 和 私有方法

  1. 子类对象 不能 在自己的方法内部,直接 访问 父类的 私有属性私有方法

  2. 子类对象 可以通过 父类公有方法 间接 访问到 私有属性私有方法

  • 私有属性、方法 是对象的隐私,不对外公开,外界 以及 子类 都不能直接访问
  • 私有属性、方法 通常用于做一些内部的事情

示例

示例

02. 多继承

概念

语法

class 子类名(父类名1, 父类名2...)
    pass

2.1 多继承的使用注意事项

问题的提出

提示:开发时,应该尽量避免这种容易产生混淆的情况! —— 如果 父类之间 存在 同名的属性或者方法,应该 尽量避免 使用多继承

Python 中的 MRO —— 方法搜索顺序

print(C.__mro__)

输出结果

(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)

2.2 新式类与旧式(经典)类

objectPython 为所有对象提供的 基类,提供有一些内置的属性和方法,可以使用 dir 函数查看

新式类经典类 在多继承时 —— 会影响到方法的搜索顺序

为了保证编写的代码能够同时在 Python 2.xPython 3.x 运行!

今后在定义类时,如果没有父类,建议统一继承自 object

class 类名(object):
    pass

关注微信公众号,回复【资料】、Python、PHP、JAVA、web,则可获得Python、PHP、JAVA、前端等视频资料。

上一篇 下一篇

猜你喜欢

热点阅读