Python面向对象|属性封装详解(公有属性、私有属性、get/set方法、@property装饰器)零基础吃透
一、什么是封装封装是面向对象三大特性封装、继承、多态第一位也是最重要、项目最常用的特性。封装核心思想隐藏对象内部的私有数据只对外提供安全的访问接口。通俗理解把数据藏起来不让外部随意修改把操作统一收口通过方法可控访问防止外部传入非法数据、乱改数据为什么需要封装如果属性全部公开外部可以随意赋值会出现大量非法数据年龄 -100分数 9999账号密码随意篡改封装的意义数据安全、可控、可校验。二、公有属性 vs 私有属性1. 公有属性默认正常定义的属性外部可以任意读取、任意修改。class Student: def __init__(self, name, age): self.name name self.age age stu Student(张三, 18) # 外部直接读写完全不受限制 stu.age -50 print(stu.age)缺点极其明显数据完全不受控业务极其不安全。2. 私有属性封装核心Python中属性前加两个下划线 __ 即为私有属性特点只能类内部访问外部无法直接读写有效保护数据class Student: def __init__(self, name, age): self.name name self.__age age # 私有属性 stu Student(张三, 18) # 报错外部无法直接访问 # print(stu.__age)三、封装标准写法get/set 方法私有属性不能外部直接访问所以提供两套接口get方法获取私有属性值set方法修改私有属性值可做数据校验完整封装案例标准作业版class Student: def __init__(self, name, age): self.name name self.__age age # 私有属性 # get 获取数据 def get_age(self): return self.__age # set 修改数据核心数据校验 def set_age(self, new_age): if 0 new_age 150: self.__age new_age else: print(年龄输入不合法) # 测试 stu Student(张三, 18) # 读取 print(stu.get_age()) # 修改合法数据 stu.set_age(20) print(stu.get_age()) # 修改非法数据被拦截 stu.set_age(-10)封装最大优势所有数据修改必须经过 set 方法统一校验、统一过滤杜绝脏数据四、Python伪私有机制面试考点Python 的私有属性是语法伪装不是绝对私有本质Python 把__age改名成了_类名__ageprint(stu._Student__age)总结Python 私有是规范约束不是语法强制锁死程序员要自觉遵守封装规则不强行访问私有属性五、高级封装property 装饰器极简写法每次手写 get/set 太麻烦Python 提供property优雅封装作用property将方法变成「属性形式读取」属性名.setter将方法变成「属性形式修改」优雅封装完整版class Student: def __init__(self, name, age): self.name name self.__age age # 读取 property def age(self): return self.__age # 修改 age.setter def age(self, new_age): if 0 new_age 150: self.__age new_age else: print(年龄不合法) # 调用像普通属性一样简单 stu Student(李四, 18) print(stu.age) stu.age 30 print(stu.age) stu.age -20优势调用简洁、保留校验逻辑、完全符合封装思想。六、只读属性设置高阶用法只写 property不写 setter实现只读、不可修改class Student: def __init__(self, id_num): self.__id id_num property def id(self): return self.__id stu Student(2026001) print(stu.id) # stu.id 123 # 报错无法修改七、全文核心总结封装核心隐藏私有数据开放可控接口保证数据安全私有属性双下划线 __xxx类外不可直接访问基础封装get() 获取、set() 校验修改高级封装property 装饰器优雅读写Python私有是伪私有靠编码规范约束。八、OOP四大特性完整收官至此你的 CSDN Python OOP 全集已集齐类与对象 → 继承 → 组合 → 类成员 →属性封装全套零基础到进阶可直接当成期末大作业系列专栏✨ 点赞收藏OOP彻底学通

相关新闻

安卓APP渗透测试实战:从环境搭建到漏洞挖掘的完整指南

安卓APP渗透测试实战:从环境搭建到漏洞挖掘的完整指南

1. 从“黑盒”到“白盒”:我的安卓APP渗透测试实战心法干了这么多年移动安全,安卓APP的渗透测试一直是个既基础又充满挑战的活儿。说它基础,是因为流程和工具相对固定;说它挑战,是因为随着Android系统的迭代、开发框架…

2026/10/26 0:12:40 阅读更多 →
RuoYi-App企业级移动开发平台实战指南

RuoYi-App企业级移动开发平台实战指南

1. RuoYi-App项目概述RuoYi-App是一款基于Spring Boot框架的企业级快速开发平台移动端实现。作为RuoYi系列产品的移动端解决方案,它完美继承了后台管理系统的核心功能模块,并针对移动设备特性进行了深度优化。我在实际项目中使用这个框架已有两年多时间&…

2026/10/25 17:17:37 阅读更多 →
LeetCode 1442:异或相等三元组的高效解法

LeetCode 1442:异或相等三元组的高效解法

1. 题目解析与核心概念这道题目来自LeetCode第1442题&#xff0c;题目描述如下&#xff1a;给定一个整数数组arr&#xff0c;我们需要统计能够形成两个异或相等数组的三元组(i, j, k)的数目&#xff0c;其中0 ≤ i < j ≤ k < arr.length。首先我们需要明确几个关键概念&…

2026/10/25 7:11:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 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/26 12:00:19 阅读更多 →
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/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练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/26 8:34:37 阅读更多 →