跟小罗学python看完这篇文章,你的Python基础就差不多了(附409集精品教程)( 八 )
本文插图
属性的获取机制
在 Python 中 属性的获取 存在一个 向上查找机制
本文插图
因此 , 要访问类属性有两种方式:
类名.类属性
对象.类属性 (不推荐 , 因为如果使用 对象.类属性 = 值 赋值语句 , 只会给对象添加一个属性 , 而不会影响到类属性的值)4.3 类方法和静态方法4.3.1 类方法
类属性 就是针对 类对象 定义的属性 使用 赋值语句 在 class 关键字下方可以定义 类属性 类属性 用于记录 与这个类相关 的特征
类方法 就是针对 类对象 定义的方法 在 类方法 内部可以直接访问 类属性 或者调用其他的 类方法
语法如下@classmethoddef 类方法名(cls):pass
类方法需要用 修饰器 @classmethod 来标识 , 告诉解释器这是一个类方法
类方法的 第一个参数 应该是 cls 由 哪一个类 调用的方法 , 方法内的 cls 就是 哪一个类的引用 这个参数和 实例方法 的第一个参数是 self 类似 提示 使用其他名称也可以 , 不过习惯使用 cls
通过 类名. 调用 类方法 , 调用方法时 , 不需要传递 cls 参数
在方法内部 可以通过 cls. 访问类的属性 也可以通过 cls. 调用其他的类方法
【跟小罗学python看完这篇文章,你的Python基础就差不多了(附409集精品教程)】示例
定义一个 工具类 , 每件工具都有自己的 name
需求 —— 在 类 封装一个 show_tool_count 的类方法 , 输出使用当前这个类 , 创建的对象个数@classmethoddef show_tool_count(cls):"""显示工具对象的总数"""print("工具对象的总数 %d" % cls.count)4.3.2 静态方法
在开发时 , 如果需要在 类 中封装一个方法 , 这个方法: 既 不需要 访问 实例属性 或者调用 实例方法 也 不需要 访问 类属性 或者调用 类方法
这个时候 , 可以把这个方法封装成一个 静态方法
语法如下@staticmethoddef 静态方法名():pass
静态方法 需要用 修饰器 @staticmethod 来标识 , 告诉解释器这是一个静态方法
通过 类名. 调用 静态方法
示例:
静态方法 show_help 显示游戏帮助信息
类方法 show_top_score 显示历史最高分
实例方法 start_game 开始当前玩家的游戏
本文插图
探索:
实例方法 —— 方法内部需要访问 实例属性 实例方法 内部可以使用 类名. 访问类属性
类方法 —— 方法内部 只需要访问 类属性
静态方法 —— 方法内部 , 不需要访问 实例属性 和 类属性5. 单例5.1 单例设计模式
设计模式 设计模式 是 前人工作的总结和提炼 , 通常 , 被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
单例设计模式 目的 —— 让 类 创建的对象 , 在系统中 只有 唯一的一个实例 每一次执行 类名() 返回的对象 , 内存地址是相同的单例设计模式的应用场景 音乐播放 对象 回收站 对象 打印机 对象 ……5.2 静态方法: __new__
使用 类名() 创建对象时 , Python 的解释器 首先 会 调用 __new__ 方法为对象 分配空间
__new__ 是一个 由 object 基类提供的 内置的静态方法 , 主要作用有两个: 在内存中为对象 分配空间 返回 对象的引用
Python 的解释器获得对象的 引用 后 , 将引用作为 第一个参数 , 传递给 __init__ 方法重写 __new__ 方法 的代码非常固定!
重写 __new__ 方法 一定要 return super().__new__(cls) , 否则 Python 的解释器 得不到 分配了空间的 对象引用 , 就不会调用对象的初始化方法
推荐阅读
- 李玟|45岁李玟风格“释放天性”,当看完这组照片后,网友:真羡慕你老公!
- 胖小企鹅|看完这两点,我赶紧扔下手机去和宝宝聊聊天!
- 中小学▲小学生课上偷偷“传纸条”,被老师截胡,看完内容差点笑出鼻涕泡
- 开往未来的列车|对比iOS 14,为什么网友偏爱ColorOS?看完这几点发现后者真香
- 北石同学|为什么没人敢动孟婆?看完她的丈夫和父亲,你就懂了!,三界之中
- 悠家娱乐 VS Code 中的 Python 体验,#新闻拍一拍# 微软推出 Pylance,改善
- C罗|21世纪足坛最佳阵容出炉!梅罗+大罗小罗 巴萨皇马包揽11人
- 篮球怪谈|乔丹的小腿你就懂了,怎样才算得上是顶级的天赋?看完小卡的大手
- 篮球怪谈|乔、科、詹、库谁在中国的人气最高?看完他们的中国行你就懂了
- Python1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源
