当前位置: 首页 > news >正文

【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时,开发者在提醒你:“这是一个内部零件,请通过我提供的其他公开方法(函数)来操作我,不要直接动手。”

http://www.jsqmd.com/news/291143/

相关文章:

  • 如何升级unet版本?镜像更新操作实战指南
  • 【python 基础】装饰器
  • 避坑指南:使用科哥CV-UNet镜像常见问题全解答
  • Speech Seaco Paraformer 16kHz采样率要求:音频预处理实战教程
  • BERT语义系统置信度可视化:WebUI交互部署实战
  • 深度剖析could not find driver问题的系统学习指南
  • IQuest-Coder-V1跨语言支持:多语言项目生成实战案例
  • DeepSeek与GPT-OSS对比:20B级模型推理效率评测
  • 批量生成怎么做?麦橘超然脚本化调用实例
  • Qwen3-0.6B流式输出效果展示,文字逐字出现
  • 实战语音识别预处理:FSMN-VAD离线镜像让VAD检测更简单
  • python opencv计算E矩阵分解RT - MKT
  • python opencv计算F矩阵分解RT - MKT
  • 科研论文提取难?MinerU+LaTeX_OCR部署实战案例
  • 大面积修复卡顿?fft npainting lama性能优化建议
  • 亲自动手试了Qwen-Image-2512,AI修图竟如此简单
  • 为什么Qwen3-4B部署慢?镜像免配置优化教程提升启动效率
  • FSMN VAD社区贡献指南:如何参与二次开发
  • Llama3-8B对话体验最佳实践:Open-WebUI参数调优部署教程
  • 告别手动输入!用cv_resnet18_ocr-detection自动识别发票内容
  • 有源蜂鸣器PWM频率配置:完整指南
  • Qwen3-4B部署教程:3步完成GPU算力适配,支持256K长文本处理
  • Llama3与Qwen-Image多模态对比:文本生成vs图像生成实战评测
  • NewBie-image-Exp0.1生成失败?数据类型冲突修复全流程指南
  • Qwen3-4B-Instruct响应不一致?温度参数调优实战指南
  • NewBie-image-Exp0.1降本部署案例:节省环境配置时间90%实操手册
  • FSMN-VAD部署全流程:从环境配置到Web界面调用详细步骤
  • 实测分享:我用Open-AutoGLM做了这些神奇操作
  • YOLOE功能测评:文本/视觉/无提示三种模式对比
  • 深入解析电感的作用与电源稳定性关系