news 2026/4/16 9:06:10

函数与面向对象编程知识梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
函数与面向对象编程知识梳理

目录

第一阶段:基础构建 (The Foundation)

第二阶段:OOP 三大支柱 (The Three Pillars)

第三阶段:工厂与构造技巧 (Creation & Structure)

第四阶段:Pythonic 黑魔法 (Advanced Magic)

👑 终极代码汇总:一个类包含所有知识点


这是一份关于 Python 函数与面向对象编程(OOP)的全景知识梳理

我们从最初的“定义一个类”,一路进阶到了“让类拥有魔法”。你可以把这看作是你目前的技术技能树

第一阶段:基础构建 (The Foundation)

核心思想:类是图纸,对象是实物。

知识点关键语法/代码核心作用
类的定义class Name:定义一个新的数据类型(图纸)。
占位符pass保持语法完整,暂时什么都不做。
初始化def __init__(self, ...)构造函数。创建对象时自动调用,给属性赋值。
实例引用self指代当前正在操作的那个对象(比如“这辆车”)。
普通方法def method(self):定义对象的行为(比如“跑”、“跳”)。

第二阶段:OOP 三大支柱 (The Three Pillars)

核心思想:代码复用、安全与灵活。

知识点关键语法/代码核心作用
1. 继承class Child(Parent):复用代码。子类拥有父类的所有能力。
保留父类功能super().__init__(...)在子类扩展功能时,不丢掉父类的初始化逻辑。
2. 封装self.__age(双下划线)安全。隐藏内部数据,不让外部直接随意修改。
3. 多态同名方法pay()灵活。不同的子类(支付宝/微信)对同一个指令做出不同反应。

第三阶段:工厂与构造技巧 (Creation & Structure)

核心思想:让对象的创建更加灵活、通用。

知识点关键语法/代码核心作用
不定长参数**kwargs接收任意数量的关键字参数,打包成字典。
安全取值kwargs.get("key", default)有参数就用参数,没参数就用默认值,防止报错。
类方法@classmethod+cls智能模具cls代表当前类,用于工厂模式,支持继承。
静态方法@staticmethod普通工具。不需要selfcls,仅仅是放在类里的普通函数。

第四阶段:Pythonic 黑魔法 (Advanced Magic)

核心思想:动态修改、优雅调用、像原生类型一样自然。

知识点关键语法/代码核心作用
类装饰器@decorator外部修改。不改源码,动态给类增加功能(如打标签、加日志)。
Monkey PatchClass.method = func动态补丁。运行时强行把外部函数塞进类里。
属性装饰器@property智能属性。把方法伪装成变量(obj.area),实现计算属性或读写控制。
Setter@name.setter配合@property,在赋值(obj.score=99)时进行数据检查。
魔法方法__str__print(obj)输出人类能看懂的字符串。
运算符重载__add__/__eq__让自定义对象支持+,-,==等符号运算。

👑 终极代码汇总:一个类包含所有知识点

为了让你一眼看懂这些概念是如何融合的,我写了一个集大成的SmartShape案例:

import math # --- 1. 装饰器 (给类动态打标签) --- def add_id(cls): cls.type_id = "SHAPE_001" return cls @add_id class SmartShape: # --- 2. 初始化与私有属性 (封装) --- def __init__(self, size): self._size = size # 内部存储,外部不直接碰 # --- 3. @property (把方法变属性,读写控制) --- @property def size(self): return self._size @size.setter def size(self, value): if value < 0: print("❌ 尺寸不能为负数!") else: self._size = value # --- 4. 普通方法 (需要重写的基类方法) --- def area(self): return 0 # --- 5. 类方法 (工厂模式 + **kwargs) --- @classmethod def create(cls, **kwargs): # cls 自动识别是哪个类在调用 val = kwargs.get("val", 1) return cls(val) # --- 6. 魔法方法 (自我介绍 + 运算) --- def __str__(self): return f"我是 {self.__class__.__name__},尺寸是 {self.size}" def __add__(self, other): # 两个形状相加,返回一个新的形状,尺寸叠加 return self.__class__(self.size + other.size) # --- 7. 继承 (多态) --- class Circle(SmartShape): def area(self): return math.pi * self.size ** 2 class Square(SmartShape): def area(self): return self.size ** 2 # === 测试运行 === # 使用工厂模式创建 c1 = Circle.create(val=10) # cls 变成了 Circle s1 = Square.create(val=5) # cls 变成了 Square # 测试装饰器 print(f"类型ID: {c1.type_id}") # 输出: SHAPE_001 # 测试 @property 和 Setter c1.size = 20 # 正常修改 c1.size = -5 # 输出: ❌ 尺寸不能为负数! # 测试多态 (同样的 .area() 方法,不同的计算公式) print(f"圆面积: {c1.area():.2f}") print(f"方面积: {s1.area()}") # 测试魔法方法 (__str__ 和 __add__) print(c1) # 输出: 我是 Circle,尺寸是 20 c2 = c1 + c1 # 两个圆相加 print(c2) # 输出: 我是 Circle,尺寸是 40
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 7:34:00

Dify平台的SDK使用示例生成效率测评

Dify平台的SDK使用示例生成效率测评 在AI应用开发的战场上&#xff0c;时间就是竞争力。当一个企业需要快速上线一款基于大模型的知识问答系统时&#xff0c;传统的开发方式往往意味着数周甚至更久的调试、集成与测试周期——从手动调用API、反复调整提示词&#xff0c;到构建R…

作者头像 李华
网站建设 2026/4/13 15:41:29

qserialport数据帧处理策略:系统学习版

串口通信实战&#xff1a;用 QSerialPort 构建可靠的数据帧解析系统你有没有遇到过这样的情况&#xff1f;设备明明在发数据&#xff0c;Qt 程序也收到了readyRead()信号&#xff0c;但解析出来的却是乱码、错位&#xff0c;甚至程序直接崩溃。调试半天才发现——不是硬件问题&…

作者头像 李华
网站建设 2026/4/15 5:30:05

阴阳师百鬼夜行自动化助手:告别手酸,轻松获取稀有式神

还在为百鬼夜行手动撒豆而手酸吗&#xff1f;阴阳师百鬼夜行自动化助手能够彻底解放你的双手&#xff0c;让你的游戏体验从繁琐操作变成轻松享受。这款基于AI视觉识别的智能助手&#xff0c;通过精准的目标检测和实时跟踪技术&#xff0c;实现高效自动撒豆操作&#xff0c;让你…

作者头像 李华
网站建设 2026/4/16 2:30:28

查询数据库表数据,可以用DataFrame 接收,并遍历

import mysql.connector import pandas as pd# 连接到 MySQL 数据库 conn mysql.connector.connect(host"localhost",user"root",password"password",database"testdb" )# 使用 pandas 读取 MySQL 表的数据并存入 DataFrame df pd.r…

作者头像 李华
网站建设 2026/4/16 4:00:02

AlwaysOnTop窗口置顶工具:彻底告别窗口切换烦恼的终极方案

AlwaysOnTop窗口置顶工具&#xff1a;彻底告别窗口切换烦恼的终极方案 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在现代多任务工作环境中&#xff0c;你是否经常面临这样的…

作者头像 李华
网站建设 2026/4/15 15:40:16

小红书数据采集实战指南:从API拦截到内容自动化获取

还在为如何批量获取小红书内容而烦恼吗&#xff1f;&#x1f914; 小红书作为优质内容平台&#xff0c;其数据采集一直是技术难点。本文将通过问题导向的方式&#xff0c;带你掌握一套高效的小红书数据采集解决方案&#xff0c;涵盖痛点分析、技术选型、实践步骤和进阶优化&…

作者头像 李华