【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.mzph.cn/news/1207377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何升级unet版本?镜像更新操作实战指南

如何升级UNet版本?镜像更新操作实战指南 1. 为什么需要升级UNet版本? 你可能已经用过这个由科哥构建的“UNet人像卡通化”工具——它能把真人照片一键转成生动有趣的卡通风格。但你有没有遇到过这些情况? 某天发现别人生成的卡通图细节更丰…

【python 基础】装饰器

前言:一旦你在一个函数上方添加了 property,这个函数就不再是一个普通的“方法(Method)”了,它被转化成了一个 属性对象(Property Object)/ 描述符(Descriptor)。我们可以…

避坑指南:使用科哥CV-UNet镜像常见问题全解答

避坑指南:使用科哥CV-UNet镜像常见问题全解答 1. 为什么需要这份避坑指南? 你兴冲冲下载了科哥的 CV-UNet 图像抠图镜像,双击启动、打开浏览器、上传一张人像——结果发现边缘发白、发丝糊成一团、批量处理卡在第3张不动、或者根本点不开“…

Speech Seaco Paraformer 16kHz采样率要求:音频预处理实战教程

Speech Seaco Paraformer 16kHz采样率要求:音频预处理实战教程 1. 为什么16kHz是Speech Seaco Paraformer的“黄金采样率” 你可能已经注意到,无论是在WebUI界面提示、常见问题解答,还是模型文档里,都反复强调一个数字&#xff…

BERT语义系统置信度可视化:WebUI交互部署实战

BERT语义系统置信度可视化:WebUI交互部署实战 1. 什么是BERT智能语义填空服务 你有没有试过这样一句话:“他做事总是很[MASK],让人放心。” 只看前半句,你大概率会脱口而出“靠谱”“稳重”“踏实”——这种靠语感补全句子的能力…

深度剖析could not find driver问题的系统学习指南

以下是对您提供的技术博文进行 深度润色与重构后的版本 。我以一位资深PHP内核实践者DevOps工程师的双重身份,用更自然、更具教学感和实战穿透力的语言重写了全文—— 彻底去除AI腔调、模板化结构与空洞术语堆砌,代之以真实开发场景中的思考脉络、踩坑…

IQuest-Coder-V1跨语言支持:多语言项目生成实战案例

IQuest-Coder-V1跨语言支持:多语言项目生成实战案例 1. 为什么跨语言能力对开发者真正重要 你有没有遇到过这样的情况:接手一个用Rust写的开源库,文档却是日语的;或者团队里有人擅长Python,有人主攻Java,…

DeepSeek与GPT-OSS对比:20B级模型推理效率评测

DeepSeek与GPT-OSS对比:20B级模型推理效率评测 你是否也在寻找一款既强大又省资源的20B级别大模型?不是动辄需要8张A100才能跑起来的庞然大物,也不是牺牲效果换速度的轻量妥协——而是真正能在双卡4090D上稳稳跑、响应快、生成稳、部署简的实…

批量生成怎么做?麦橘超然脚本化调用实例

批量生成怎么做?麦橘超然脚本化调用实例 你是不是也遇到过这样的情况:想用麦橘超然模型批量生成几十张图,但每次都要打开网页、填提示词、点生成、等结果、再保存……重复操作十几次后手酸眼花,效率低得让人抓狂?别急…

Qwen3-0.6B流式输出效果展示,文字逐字出现

Qwen3-0.6B流式输出效果展示,文字逐字出现 还在盯着屏幕等AI“想完再答”?别人已经看到答案一个字一个字跳出来——像打字员在你眼前实时敲出思考过程。这不是特效,是Qwen3-0.6B真实发生的流式输出体验:没有停顿、没有卡顿、没有整…

实战语音识别预处理:FSMN-VAD离线镜像让VAD检测更简单

实战语音识别预处理:FSMN-VAD离线镜像让VAD检测更简单 1. 为什么语音识别前必须做端点检测? 你有没有试过把一段5分钟的会议录音直接喂给语音识别模型?结果可能是:开头30秒静音、中间多次长时间停顿、结尾还有20秒环境噪音——这…

python opencv计算E矩阵分解RT - MKT

python opencv计算E矩阵分解RT import cv2 import numpy as np# 示例:从特征点匹配恢复相对位姿 def estimate_relative_pose_from_matches(keypoints1, keypoints2, matches, K):"""从特征点匹配估计…

python opencv计算F矩阵分解RT - MKT

python opencv计算F矩阵分解RT import cv2 import numpy as np from scipy.spatial.transform import Rotation as Rdef improved_decompose_homography():"""改进的单应性矩阵分解,处理尺度问题"…

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

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

大面积修复卡顿?fft npainting lama性能优化建议

大面积修复卡顿?FFT NPainting LAMA性能优化建议 在使用 FFT NPainting LAMA 进行图像大面积修复时,不少用户反馈:标注一大片区域后点击“ 开始修复”,界面长时间卡在“执行推理…”状态,等待30秒甚至超过1分钟仍无响…

亲自动手试了Qwen-Image-2512,AI修图竟如此简单

亲自动手试了Qwen-Image-2512,AI修图竟如此简单 你有没有过这样的经历:刚拍完一张风景照,却发现右下角有个碍眼的水印;辛苦做的产品图,客户临时要求把LOGO换成新版本;或者想给老照片换背景,又不…

为什么Qwen3-4B部署慢?镜像免配置优化教程提升启动效率

为什么Qwen3-4B部署慢?镜像免配置优化教程提升启动效率 1. 真实体验:从点击部署到能用,等了整整7分23秒 你是不是也遇到过这样的情况——在镜像平台点下“一键部署”Qwen3-4B-Instruct-2507,然后盯着进度条发呆:模型…

FSMN VAD社区贡献指南:如何参与二次开发

FSMN VAD社区贡献指南:如何参与二次开发 1. 为什么FSMN VAD值得你投入时间参与开发? FSMN VAD是阿里达摩院FunASR项目中开源的语音活动检测(Voice Activity Detection)模型,以轻量、高精度、低延迟著称。它仅1.7MB大…

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

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

告别手动输入!用cv_resnet18_ocr-detection自动识别发票内容

告别手动输入!用cv_resnet18_ocr-detection自动识别发票内容 在财务、行政和中小企业日常运营中,发票处理是高频却低效的重复劳动:一张张扫描、截图、再逐字录入系统,平均耗时3-5分钟/张,出错率高,月底扎堆…