news 2026/5/10 21:31:53

【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/5/10 18:57:36

YOLOv10官版镜像体验报告,小白也能玩转AI

YOLOv10官版镜像体验报告,小白也能玩转AI 在目标检测领域,YOLO系列就像一位不断进化的全能选手——每一代更新都让人忍不住点开GitHub看一眼更新日志。而当YOLOv10带着“Real-Time End-to-End Object Detection”这个响亮名号正式亮相时,很多…

作者头像 李华
网站建设 2026/5/10 2:51:29

科研论文提取难?MinerU+LaTeX_OCR部署实战案例

科研论文提取难?MinerULaTeX_OCR部署实战案例 科研人员每天面对大量PDF格式的论文,但真正能“读懂”它们的工具却不多。多栏排版、嵌套表格、复杂公式、矢量图混排——这些在人类眼里一目了然的内容,对传统PDF解析工具来说却是连环陷阱。复制…

作者头像 李华
网站建设 2026/5/8 20:24:47

fft npainting lama修复边缘有痕迹?高级技巧优化教程

FFT NPainting LaMa修复边缘有痕迹?高级技巧优化教程 1. 为什么边缘会留下痕迹——不是模型不行,是标注没到位 很多人第一次用FFT NPainting LaMa做图像修复时,都会遇到同一个问题:修复完的区域边缘像被刀切过一样,生…

作者头像 李华
网站建设 2026/5/9 11:33:40

Live Avatar怎么提速?Euler求解器切换实操指南

Live Avatar怎么提速?Euler求解器切换实操指南 1. 为什么Live Avatar需要提速? Live Avatar是阿里联合高校开源的数字人模型,主打实时驱动、高保真口型同步与自然动作生成。它基于Wan2.2-S2V-14B大模型架构,融合DiT视频扩散主干…

作者头像 李华
网站建设 2026/5/5 3:04:18

FSMN-VAD部署全流程:从环境配置到Web界面调用详细步骤

FSMN-VAD部署全流程:从环境配置到Web界面调用详细步骤 1. 这不是“语音识别”,而是更底层的“听觉开关” 你有没有遇到过这样的问题:一段5分钟的会议录音,真正说话的时间可能只有2分半,中间夹杂着大量咳嗽、翻纸、键…

作者头像 李华
网站建设 2026/5/6 21:16:10

Z-Image-Turbo移动端适配:手机浏览器访问兼容性测试

Z-Image-Turbo移动端适配:手机浏览器访问兼容性测试 你是不是也试过在手机上打开AI图像生成工具,结果页面错位、按钮点不动、上传图片失败,最后只能放弃?Z-Image-Turbo作为一款轻量高效的图像生成模型,它的Gradio UI界…

作者头像 李华