python中类的常用知识
目录1.基本结构与__init__2.继承与super()3.property装饰器4.常用的魔法方法5.classmethod与staticmethod6.__slots__节省内存7.私有属性8.__call__让实例可调用9.组合优于继承1.基本结构与__init__class Dog: # 类属性所有实例共享 species Canis familiaris def __init__(self, name, age): # 实例属性每个实例独有 self.name name self.age age def bark(self): return f{self.name} says woof!类属性 vs 实例属性——类属性被所有实例共享实例属性各自独立。2.继承与super()class Animal: def __init__(self, name): self.name name def speak(self): return ... class Cat(Animal): def __init__(self, name, color): super().__init__(name) # 调用父类 __init__ self.color color def speak(self): # 重写父类方法 return f{self.name} says meowsuper()使用的场景class Child(Parent): def method(self): super().method() # 扩展父类行为而非完全覆盖 # 额外的子类逻辑...3.property装饰器将方法伪装成属性实现 getter/setter 的优雅写法class Circle: def __init__(self, radius): self._radius radius property def radius(self): # getter return self._radius radius.setter def radius(self, value): # setter if value 0: raise ValueError(半径不能为负) self._radius value property def area(self): # 只读计算属性 return 3.14159 * self._radius ** 2 # 使用 c Circle(5) print(c.area) # 78.53975 —— 像属性一样访问 c.radius 10 # 触发 setter 校验4.常用的魔法方法__str__和__repr__class Point: def __init__(self, x, y): self.x x self.y y def __str__(self): # 给用户看的print()调用 return fPoint({self.x}, {self.y}) def __repr__(self): # 给开发者看的调试用 return fPoint(x{self.x}, y{self.y}) print(p) # Point(1, 2) ← 漂亮好读__eq__、__lt__、__len__、__getitem__这些魔术方法的作用是让你自己的对象也能用 Python 的内置操作符和函数比如、、len()、[]等class Book: def __init__(self, title, pages): self.title title self.pages pages self.content [第1页内容, 第2页内容, 第3页内容] def __eq__(self, other): # 比较 return self.pages other.pages def __lt__(self, other): # 比较排序用 return self.pages other.pages def __len__(self): # len() 调用 return self.pages def __getitem__(self, index): # obj[index] 支持索引 return self.content[index] b1 Book(A, 100) b2 Book(B, 100) print(b1 b2) # True ← 因为页数都是 100 print(len(b1)) # 100 ← 你写 len(b)Python 自动调 b.__len__() print(b[0]) # 第1页内容 ← 你写 b[0]Python 自动调 b.__getitem__(0) print(b[1]) # 第2页内容5.classmethod与staticmethodclass Date: def __init__(self, year, month, day): # ① 实例方法操作具体对象 self.year year self.month month self.day day classmethod def from_string(cls, date_str): # ② 类方法用类来造对象工厂 year, month, day date_str.split(-) return cls(int(year), int(month), int(day)) staticmethod def is_valid_date(year, month, day): # ③ 静态方法纯工具函数 return 1 month 12 and 1 day 31 # ① 普通创建 d1 Date(2024, 1, 1) # ② 类方法换种方式创建传字符串 d2 Date.from_string(2024-1-1) # ③ 静态方法只是个工具不用创建对象就能调用 print(Date.is_valid_date(2024, 13, 1)) # False6.__slots__节省内存class Point: __slots__ (x, y) # 禁止动态添加属性省内存 def __init__(self, x, y): self.x x self.y y在 Python 里每个普通对象内部都藏着一个小字典叫__dict__专门用来存它的属性。class Point: def __init__(self, x, y): self.x x self.y y p Point(1, 2) print(p.__dict__) # 输出{x: 1, y: 2}不加__slots__的代价1.费内存字典为了随时能加新东西会预留很多空间。2.可以随意乱加属性p Point(1, 2) p.z 999 # 完全没报错随便加了个 z print(p.z) # 999适用场景创建大量实例时(百万级)显著减少内存占用。7.私有属性class BankAccount: def __init__(self): self._protected 42 # 约定内部使用但可以访问 self.__private 100 # 名称改写变成 _BankAccount__private #方法也一样 def __secret_method(self): # 同样被改写_BankAccount__secret_method pass #单下划线 acc BankAccount() print(acc._protected) # 42 ← 完全可以访问Python 不拦你 acc._protected 999 # 也能改一样不拦 #双下划线 # print(acc.__private) # ❌ 报错AttributeError找不到 print(acc._BankAccount__private) # ✅ 100 ← 用改写后的真名才能访问 class Father: def __init__(self): self.__money 100 # 实际存成 _Father__money class Son(Father): def __init__(self): super().__init__() self.__money 5 # 实际存成 _Son__money名字不一样Python 会偷偷帮你改名字这就是图里说的名称改写机制 / name mangling。你写的是__privatePython 在背后把它改成了_BankAccount__private规则就是_类名__变量名8.__call__让实例可调用class Counter: def __init__(self): self.count 0 def __call__(self): self.count 1 return self.count c Counter() print(c()) # 1 print(c()) # 29.组合优于继承组合优于继承的意思是想给一个类加功能时优先把那个功能做成独立的类然后让它拥有一个组合而不是硬去继承一堆父类。这样关系更清晰、更灵活、复用性更强还能避开多继承的菱形混乱。# ✅ 组合的正确写法 # 1. 把飞行这个功能独立成一个类 class Wings: def fly(self): print(拍打翅膀飞起来了) # 2. 狗拥有翅膀has-a而不是是鸟is-a class Dog: def __init__(self): self.wings Wings() # 组合狗有一对翅膀 def bark(self): print(汪汪汪) def fly(self): self.wings.fly() # 飞的时候交给翅膀去做 # 3. 猫也想飞给它也装一对就行复用超方便 class Cat: def __init__(self): self.wings Wings() def fly(self): self.wings.fly() d Dog() d.bark() # 汪汪汪 d.fly() # 拍打翅膀飞起来了 ← 狗获得了飞行能力但它依然是狗不是鸟 c Cat() c.fly() # 拍打翅膀飞起来了 ← 同一个 Wings 类猫也能用

相关新闻

大模型API网关设计终极方案:支持动态路由、流式熔断与Token级计费(仅限内部技术委员会解密版)

大模型API网关设计终极方案:支持动态路由、流式熔断与Token级计费(仅限内部技术委员会解密版)

更多请点击: https://intelliparadigm.com 第一章:大模型API网关设计终极方案:支持动态路由、流式熔断与Token级计费(仅限内部技术委员会解密版) 现代大模型服务集群面临高并发、多租户、细粒度计费与实时服务质量保障…

2026/10/7 13:27:03 阅读更多 →
如何用Kronos金融大模型实现89%准确率的股票预测

如何用Kronos金融大模型实现89%准确率的股票预测

如何用Kronos金融大模型实现89%准确率的股票预测 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 你是否曾为股票市场的复杂波动感到困惑?是否曾…

2026/10/6 17:31:04 阅读更多 →
如何快速捕获网页视频音频?猫抓插件终极指南帮你三步搞定

如何快速捕获网页视频音频?猫抓插件终极指南帮你三步搞定

如何快速捕获网页视频音频?猫抓插件终极指南帮你三步搞定 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch&a…

2026/9/29 18:29:57 阅读更多 →

最新新闻

ERNIE情感分析实战:从句子级到属性级微调全流程

ERNIE情感分析实战:从句子级到属性级微调全流程

简介:基于Python与预训练大模型ERNIE的情感分析项目源码及配套数据集,完整覆盖句子级与属性级两类情感分析任务,面向自然语言处理学习者、算法工程师以及有实际情感分析需求的开发者。项目从数据预处理、加载ERNIE模型、特征提取,…

2026/10/7 13:27:25 阅读更多 →
知识库向量数据库怎么选?我折腾了一圈,答案就三个字

知识库向量数据库怎么选?我折腾了一圈,答案就三个字

事情是这样的。上一篇文章聊完三层检索策略之后,我盯着终端里的 docker ps 出神——里面躺着一个 Qdrant 容器,跑了快一个月,CPU 占用稳如老狗,但我一次查询都没往它那边发。因为我发现我的 Chroma 跑得好好的。240 篇文章&#x…

2026/10/7 13:27:25 阅读更多 →
网络搭建及应用赛项备赛指南:视频讲解与答案的实战用法

网络搭建及应用赛项备赛指南:视频讲解与答案的实战用法

简介:面向全国职业院校技能大赛《网络搭建及应用》赛项的备赛者与指导教师,这份资料完整整理了2021年赛题的视频讲解、操作录屏与参考答案。压缩包共60个文件,以38个txt配置记录、11个docx报告与分解笔记、8个Python脚本、2个PDF说明及1个mp4…

2026/10/7 13:27:25 阅读更多 →
AI应用层全面爆发:从AI Agent到行业落地的开源项目实战解析

AI应用层全面爆发:从AI Agent到行业落地的开源项目实战解析

从9月22日到28日这周的榜单,我几乎是每天刷好几遍,越到周末越发现一个明显的变化:真正的应用型AI项目开始大面积占据头部位置,那种“包装一个API就跑分”的仓库热度明显降了,取而代之的是能解决具体行业问题、能部署到…

2026/10/7 13:27:25 阅读更多 →
基于Java的汽车销售管理系统课程设计:从数据库设计到答辩避坑指南

基于Java的汽车销售管理系统课程设计:从数据库设计到答辩避坑指南

简介:这是一份面向汽车销售企业的Java后台管理方案,聚焦车辆管理员与销售人员的协同流程,不面向购车端。系统覆盖车辆属性管理、合同签订、订单记录、保险与上牌办理、费用结算(全款/分期)、定金与交付期限等业务规则&…

2026/10/7 13:27:25 阅读更多 →
UFS3.1协议详解:传输层UPIU报文格式与调试实战

UFS3.1协议详解:传输层UPIU报文格式与调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:26:24 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →