news 2026/4/16 13:27:45

【Python 基础】命名一

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python 基础】命名一

目录

1. 它是程序员之间的“潜规则”

2. 为什么要在这里初始化为 None?

3. 下划线的家族成员

举个直观的例子


1. 它是程序员之间的“潜规则”

Python 语言本身并不像 Java 或 C++ 那样有严格的private关键字来禁止外部访问某个变量。

  • 无下划线 (current_rgb):表示这是公共接口(Public)。你希望别人在实例化你的类后,直接通过obj.current_rgb来读取或修改它。

  • 单下划线 (_current_rgb):表示这是内部实现(Internal/Protected)。它的潜台词是:“嘿,虽然你技术上可以访问它,但请不要直接碰它,因为它可能会在以后的版本中改变,或者直接修改它会导致程序出错。”

2. 为什么要在这里初始化为None

__init__中看到self._current_rgb = None通常有两个原因:

  • 占位符:该变量在对象创建之初还没有数据(比如还在等待相机传感器传回第一帧图像),但你需要先在构造函数里声明它,以便程序知道这个属性的存在。

  • 防止报错:如果在其他方法(如process_image)中引用了self._current_rgb,而你没有在__init__中初始化它,程序会抛出AttributeError


3. 下划线的家族成员

为了让你更全面地理解,这里对比一下 Python 中常见的几种下划线用法:

命名方式示例含义
无下划线self.rgb公共的。谁都可以看,谁都可以改。
单前导下划线self._rgb约定的私有。提示他人“这是内部细节,请绕道”,但不会强制限制。
双前导下划线self.__rgb名称修饰 (Name Mangling)。Python 会自动改名(变成_ClassName__rgb),让外部更难访问,防止子类覆盖。
前后双下划线__init__魔法方法。系统自带的特殊函数,不要自己发明这种格式。

举个直观的例子

想象你正在写一个控制相机的类:

class Camera: def __init__(self): # 内部缓存,不希望用户直接去改这个还没处理好的原始数据 self._current_rgb = None # 公共属性,用户可以自由读取 self.is_connected = False def update_frame(self, data): # 在内部逻辑中更新 self._current_rgb = data

总结:当你看到_current_rgb时,开发者在提醒你:“这是一个内部零件,请通过我提供的其他公开方法(函数)来操作我,不要直接动手。”

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

基于ESP32 IDF的SmartConfig配网操作指南

以下是对您提供的博文内容进行 深度润色与结构重构后的专业级技术文章 。整体风格更贴近一位资深嵌入式工程师在技术社区中自然、严谨又不失温度的分享,彻底去除AI生成痕迹,强化逻辑连贯性、教学引导性和工程实感,并严格遵循您提出的全部优…

作者头像 李华
网站建设 2026/4/15 20:27:24

Llama3-8B对话体验最佳实践:Open-WebUI参数调优部署教程

Llama3-8B对话体验最佳实践:Open-WebUI参数调优部署教程 1. 为什么选Llama3-8B?轻量与能力的黄金平衡点 你是不是也遇到过这些情况:想本地跑个大模型,但显卡只有RTX 3060,装完Llama3-70B直接爆显存;或者试…

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

YOLOv9与RT-DETR对比评测:中小型企业部署选型建议

YOLOv9与RT-DETR对比评测:中小型企业部署选型建议 在中小型企业推进AI视觉落地的过程中,目标检测模型的选型往往面临一个现实困境:既要保证精度和泛化能力,又必须兼顾推理速度、硬件成本和工程维护复杂度。YOLO系列凭借其“快而准…

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

OrCAD Capture原理图转Pspice网表过程图解说明

以下是对您提供的博文内容进行 深度润色与结构重构后的专业级技术文章 。全文严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、老练、有工程师“现场感”; ✅ 摒弃所有模板化标题(如“引言”“总结”),以逻辑流驱动叙述; ✅ 将原理、配置、代码、调试、经验融为…

作者头像 李华
网站建设 2026/4/16 10:56:05

儿童内容创作新方式:Qwen图像生成模型部署实战指南

儿童内容创作新方式:Qwen图像生成模型部署实战指南 你是不是也遇到过这些情况? 给幼儿园做活动海报,需要一只戴蝴蝶结的卡通小熊,但找图库翻了半小时没找到合适的; 给孩子讲动物知识,想配一张“会跳舞的企…

作者头像 李华
网站建设 2026/4/16 10:54:58

fft npainting lama版权说明:开源使用与作者信息保留要求

FFT NPainting LaMa图像修复系统:开源使用与版权说明指南 1. 项目背景与开源承诺 FFT NPainting LaMa是一个基于深度学习的图像修复工具,专注于高质量的图像重绘、物体移除和瑕疵修复。它不是简单套壳,而是对LaMa模型进行了针对性优化——特…

作者头像 李华