跟小罗学python看完这篇文章,你的Python基础就差不多了(附409集精品教程)( 七 )
Python 中针对 类 提供了一个 内置属性__mro__ 可以查看 方法 搜索顺序 在搜索方法时 , 是按照 mro 的输出结果 从左至右 的顺序查找的 如果在当前类中 找到方法 , 就直接执行 , 不再搜索 如果 没有找到 , 就查找下一个类 中是否有对应的方法 , 如果找到 , 就直接执行 , 不再搜索 如果找到最后一个类 , 还没有找到方法 , 程序报错MRO 是 method resolution order —— 方法搜索顺序 , 主要用于 在多继承时判断 方法、属性 的调用 路径新式类与旧式(经典)类
新式类:以 object 为基类的类 , 推荐使用
经典类:不以 object为基类的类 , 不推荐使用在 Python 3.x 中定义类时 , 如果没有指定父类 , 会 默认使用 object作为该类的 基类 —— Python 3.x 中定义的类都是 新式类 , 在 Python 2.x 中定义类时 , 如果没有指定父类 , 则不会以 object 作为 基类 。 为了保证编写的代码能够同时在 Python 2.x 和 Python 3.x 运行!今后在定义类时 , 如果没有父类 , 建议统一继承自 object:class 类名(object):passobject 是 Python 为所有对象提供的 基类 , 提供有一些内置的属性和方法 , 可以使用 dir(object) 函数查看 。 3.2 多态
面向对象三大特性:
封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则
继承 实现代码的重用 , 相同的代码不需要重复的编写 设计类的技巧 子类针对自己特有的需求 , 编写特定的代码
多态 不同的 子类对象 调用相同的 父类方法 , 产生不同的执行结果 增加代码的灵活度 以 继承 和 重写父类方法 为前提 调用方法的技巧 , 不会影响到类的内部设计多态 更容易编写出出通用的代码 , 做出通用的编程 , 以适应需求的不断变化!
案例:在 Dog 类中封装方法 game:普通狗只是简单的玩耍定义 XiaoTianDog 继承自 Dog , 并且重写 game 方法:哮天犬需要在天上玩耍定义 Person 类 , 并且封装一个 和狗玩 的方法:在方法内部 , 直接让 狗对象 调用 game 方法
本文插图
多态示例
Person 类中只需要让 狗对象 调用 game 方法 , 而不关心具体是 什么狗 。
4. 类属性和类方法4.1 类的结构
通常会把:创建出来的 对象 叫做 类的实例创建对象的 动作 叫做 实例化对象的属性 叫做 实例属性对象调用的方法 叫做 实例方法每一个对象 都有自己独立的内存空间 , 保存各自不同的属性多个对象的方法 , 在内存中只有一份 , 在调用方法时 , 需要把对象的引用传递到方法内部
本文插图
各个不同的属性 , 独一份的方法
在 Python 中 , 类是一个特殊的对象 。
Python 中 一切皆对象:
class AAA: 定义的类属于 类对象 obj1 = AAA() 属于 实例对象
在程序运行时 , 类同样会被加载到内存在程序运行时 , 类对象在内存中只有一份 , 使用 一个类可以创建出很多个对象实例除了封装实例的属性和方法外 , 类对象还可以拥有自己的属性和方法——类属性、类方法 , 通过 类名. 的方式可以 访问类的属性 或者 调用类的方法
本文插图
类的结构4.2 类属性和实例属性
类属性 就是 类对象中定义的属性通常用来记录与这个类相关的特征类属性不会用于记录具体对象的特征示例:定义一个 工具类 , 每件工具都有自己的 name:需求 —— 知道使用这个类 , 创建了多少个工具对象?
推荐阅读
- 李玟|45岁李玟风格“释放天性”,当看完这组照片后,网友:真羡慕你老公!
- 胖小企鹅|看完这两点,我赶紧扔下手机去和宝宝聊聊天!
- 中小学▲小学生课上偷偷“传纸条”,被老师截胡,看完内容差点笑出鼻涕泡
- 开往未来的列车|对比iOS 14,为什么网友偏爱ColorOS?看完这几点发现后者真香
- 北石同学|为什么没人敢动孟婆?看完她的丈夫和父亲,你就懂了!,三界之中
- 悠家娱乐 VS Code 中的 Python 体验,#新闻拍一拍# 微软推出 Pylance,改善
- C罗|21世纪足坛最佳阵容出炉!梅罗+大罗小罗 巴萨皇马包揽11人
- 篮球怪谈|乔丹的小腿你就懂了,怎样才算得上是顶级的天赋?看完小卡的大手
- 篮球怪谈|乔、科、詹、库谁在中国的人气最高?看完他们的中国行你就懂了
- Python1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源
