news 2026/4/3 4:30:03

DAY 35 官方文档的阅读

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAY 35 官方文档的阅读

一、官方文档的检索方式

二、官方文档的阅读和使用

三、类的关注点

1.类实例化所需的参数

实例化类(类名())的本质是调用类的构造逻辑,核心参数由__init__方法定义(极少数场景需关注__new__,但__new__参数通常与__init__一致)。
(1)核心规则
实例化时传入的参数,会被直接传递给__init__方法,参数的类型、个数、默认值完全由__init__决定。

(2)常见参数类型

参数类型示例说明
必选参数def __init__(self, name):无默认值,实例化时必须传(如Student("张三"))。
默认参数def __init__(self, age=18):有默认值,实例化时可选传(如Student("张三")用默认 18,Student("李四", 20)覆盖)。
可变位置参数def __init__(self, *args):接收任意个数的位置参数,打包为元组(如Student("张三", 18, "高一"))。
可变关键字参数def __init__(self, **kwargs):接收任意个数的关键字参数,打包为字典(如Student(name="张三", age=18))。
关键字 - only 参数def __init__(self, *, grade):必须以关键字形式传递(如Student("张三", grade="高一"),不能传位置参数)。

2.普通方法所需要的函数

在面向对象编程中,普通方法(通常指 “实例方法”) 是类中最核心的函数类型,它依附于类的实例、能访问 / 修改实例状态,其设计和实现遵循函数的基本规则,但又和类的特性深度绑定。

普通方法(实例方法)是定义在类内部、第一个参数固定为self 的函数,它的核心作用是实现实例的 “行为”—— 操作实例的属性、完成特定业务逻辑,只能通过类的实例调用(而非直接通过类调用)。
它和普通函数的核心区别:

  • 必须绑定实例(self参数由解释器自动传递,指向调用该方法的实例);
  • 可直接访问实例属性(self.xxx)和类属性(self.__class__.xxx/ 类名.xxx);
  • 可调用类内的其他普通方法、类方法、静态方法。

普通方法(实例方法)的核心构成(所需要素)
一个完整的普通方法,本质是 “带self参数的函数”,其所需的核心要素和普通函数一致,但需适配类的特性。

要素说明
必选的self参数第一个参数必须是self(命名约定,也可写其他名字,但解释器默认传实例),用于绑定调用方法的实例,通过它可访问 / 修改实例属性。
业务参数(可选)除self外,可根据业务需求定义任意参数(和普通函数的参数规则完全一致):
1. 必选参数:无默认值,调用时必须传;
2. 默认参数:有默认值,调用时可选传;
3. 可变位置参数(*args):接收任意位置参数;
4. 可变关键字参数(**kwargs):接收任意关键字参数;
5. 关键字 - only 参数(*, param):必须以关键字形式传递。
函数体逻辑实现方法的核心功能,可:
1. 读取 / 修改self上的实例属性;
2. 调用类的其他方法(如self.other_method());
3. 调用类属性(self.school);
4. 执行任意业务逻辑(计算、IO、判断等)。
返回值(可选)用return返回结果,无return则默认返回None;返回值类型根据业务需求设计(如数值、字符串、对象、布尔值等)。

3.普通方法的返回值

普通方法的返回值和普通函数的返回值规则完全一致,核心差异仅在于:返回值通常与实例的状态(self绑定的属性)强相关,服务于实例的 “行为结果”。
核心规则:

  • 用 return [值] 显式指定返回结果,无 return 或 return 后无值 → 方法默认返回 None;
  • 可返回任意 Python 对象(数值、字符串、列表、字典、自身实例、甚至另一个类 / 函数);
  • 返回值的设计需匹配方法的业务目标(比如 “查询类方法” 返回具体数据,“操作类方法” 可返回None或自身实例)。
返回值类型说明典型场景
无返回值(None)方法仅执行操作(如修改实例属性、打印、IO 操作),无需返回结果修改实例的成绩、更新实例的信息、打印实例详情
基础数据类型(int/str/bool/float)返回单个计算结果、状态标识、文本信息计算平均分(float)、判断是否及格(bool)、获取姓名(str)
复合数据类型(list/dict/tuple)返回批量数据、结构化结果返回实例的所有成绩(dict)、返回成绩排名(list)、返回姓名 + 年龄(tuple)
类实例(自身 / 其他类)返回self实现链式调用,或返回关联的其他实例链式调用(self)、返回总分更高的同学实例、返回学生的班主任实例
特殊类型(None/异常)无有效结果时返回None;异常通过raise抛出(而非返回)查询不存在的科目成绩返回None;参数非法时raise ValueError(不返回值)

四、绘图的理解

绘图的本质是将 “抽象的图形逻辑 / 数据” 转化为 “可视化的像素 / 矢量图形” 的过程,核心是 “分层实现”—— 从用户能理解的 “画一条折线、一个柱状图”,到计算机能执行的 “操作像素、渲染路径”,整个流程分为三层,且底层库是实现可视化的核心支撑。

分层作用示例
应用层(业务层)用户编写的业务逻辑,定义 “画什么”(如基于数据画折线图、设置颜色 / 标题)plt.plot(x, y, color='red')
抽象绘图层(中层)封装高层图形逻辑,将用户指令转化为 “底层能识别的图形描述”(如路径、画笔、颜色)Matplotlib/Seaborn/Plotly
底层渲染 / 图像层执行 “真正的绘制”:将图形描述转化为像素 / 矢量数据,处理图像格式 / 硬件显示Agg/Cairo/Skia、libpng/libjpeg、OpenGL

1.绘图的核心是 “分层转换”:用户的高层需求 → 抽象绘图层的图形描述 → 底层库的像素 / 渲染执行;
2.底层库是绘图的 “引擎”,负责真正的渲染 / 图像编码,多为 C/C++ 编写,Python通过绑定调用;
3.调用方式分两种:
间接调用(主流):上层库(Matplotlib/PIL)封装底层逻辑,用户写简洁代码;
直接调用(定制化):通过 pycairo/PyOpenGL 等绑定,手动操作底层 API;
4.选择原则:优先用上层库提升开发效率,仅在定制化 / 性能极致要求时直接调用底层。

@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!