@classmethoddef 类方法名(cls):pass- 类方法需要用 修饰器 @classmethod 来标识 , 告诉解释器这是一个类方法
- 类方法的 第一个参数 应该是 cls 由 哪一个类 调用的方法 , 方法内的 cls 就是 哪一个类的引用 这个参数和 实例方法 的第一个参数是 self 类似 提示 使用其他名称也可以 , 不过习惯使用 cls
- 通过 类名. 调用 类方法 , 调用方法时 , 不需要传递 cls 参数
- 在方法内部 可以通过 cls. 访问类的属性 也可以通过 cls. 调用其他的类方法
- 定义一个 工具类 , 每件工具都有自己的 name
- 需求 —— 在 类 封装一个 show_tool_count 的类方法 , 输出使用当前这个类 , 创建的对象个数
@classmethoddef show_tool_count(cls):"""显示工具对象的总数"""print("工具对象的总数 %d" % cls.count)4.3.2 静态方法- 在开发时 , 如果需要在 类 中封装一个方法 , 这个方法: 既 不需要 访问 实例属性 或者调用 实例方法 也 不需要 访问 类属性 或者调用 类方法
- 这个时候 , 可以把这个方法封装成一个 静态方法
【看完这篇文章,你的Python基础就差不多了】
@staticmethoddef 静态方法名():pass- 静态方法 需要用 修饰器 @staticmethod 来标识 , 告诉解释器这是一个静态方法
- 通过 类名. 调用 静态方法
- 静态方法 show_help 显示游戏帮助信息
- 类方法 show_top_score 显示历史最高分
- 实例方法 start_game 开始当前玩家的游戏

文章插图
探索:
- 实例方法 —— 方法内部需要访问 实例属性 实例方法 内部可以使用 类名. 访问类属性
- 类方法 —— 方法内部 只需要访问 类属性
- 静态方法 —— 方法内部 , 不需要访问 实例属性 和 类属性
- 设计模式 设计模式 是 前人工作的总结和提炼 , 通常 , 被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
- 单例设计模式 目的 —— 让 类 创建的对象 , 在系统中 只有 唯一的一个实例 每一次执行 类名() 返回的对象 , 内存地址是相同的
- 单例设计模式的应用场景 音乐播放 对象 回收站 对象 打印机 对象 ……
- 使用 类名() 创建对象时 , Python 的解释器 首先 会 调用 __new__ 方法为对象 分配空间
- __new__ 是一个 由 object 基类提供的 内置的静态方法 , 主要作用有两个: 在内存中为对象 分配空间 返回 对象的引用
- Python 的解释器获得对象的 引用 后 , 将引用作为 第一个参数 , 传递给 __init__ 方法
重写 __new__ 方法 的代码非常固定!
- 重写 __new__ 方法 一定要 return super().__new__(cls) , 否则 Python 的解释器 得不到 分配了空间的 对象引用 , 就不会调用对象的初始化方法
- 注意:__new__ 是一个静态方法 , 在调用时需要 主动传递 cls 参数

文章插图

文章插图
5.3 Python 中的单例
- 单例 —— 让 类 创建的对象 , 在系统中 只有 唯一的一个实例 定义一个 类属性 , 初始值是 None , 用于记录 单例对象的引用 重写 __new__ 方法 如果 类属性 is None , 调用父类方法分配空间 , 并在类属性中记录结果 返回 类属性 中记录的 对象引用
推荐阅读
- 拆解固态硬盘结构
- 茉莉花茶怎么泡,茉莉花茶如何喝
- MITM 如何避免中间人攻击
- 茉莉花茶作用,喝茉莉花茶的好处和功效作用
- 洛神花茶降火吗,洛神花茶的功效及其作用
- 如何看玫瑰花茶好坏,玫瑰花茶到底是什么茶
- 桃花茶的功效与作用,桃花茶的功效和作用
- 花草茶常用有哪些,常用的花草茶有哪些
- 三七花茶的副作用与禁忌,牛蒡茶的副作用
- 百合花如何喝,茉莉花茶如何喝
