首页/新闻资讯/正文详情

一篇文章搞懂python的三种魔术方法、私有方法、名称改写下划线设计

发布时间:2026/9/24 17:34:36 来源:云帆数科 栏目:资讯中心
一篇文章搞懂python的三种魔术方法、私有方法、名称改写下划线设计
前后双下划线__xxx__→ 叫魔术方法Magic Method / 特殊方法像你代码里的__iter__、__next__还有平时见到的__init__、__str__都是这一类。为什么要前后都加双下划线这是Python官方约定的特殊命名格式目的区分普通方法普通方法我们自己写比如get_name()没有双下划线__iter__()这种是Python内置预留名字属于语言本身规定好的钩子函数。意思就是这个方法不是让你手动直接调用而是Python解释器在特定场景自动调用举个对照myiteriter(myclass)# 等价于 myclass.__iter__()next(myiter)# 等价于 myiter.__next__()你写iter()、next()解释器自动去找对应的__iter__、__next__。三种下划线命名一次性分清小白必记①__xxx__前后双下划线魔术方法系统预留名字不要自己随便创建新的__abc__这种名字防止和Python未来新增的内置方法冲突。由解释器自动调用。 例子__init__构造方法、__iter__、__next__、__str__、__len__②_xxx单下划线开头约定私有只是约定俗成告诉其他开发者这是内部变量/方法尽量不要在类外面直接访问。语法上仍然能访问只是一个提示。③__xxx双下划线开头末尾没有下划线名称改写name manglingPython会自动改名用来避免子类重名冲突不是严格私有。classA:def__func(self):pass# 实际变成 _A__func迭代器的例子def__iter__(self):def__next__(self):Python规定想让这个类支持iter()、next()就必须实现名字刚好叫__iter__和__next__的魔术方法。 名字不能随便改写成iter_()或者_iter_()都不行解释器识别不到。一句话总结前后双下划线是Python预留的特殊标记代表这是语言内置钩子函数由解释器自动调用不是普通自定义方法。要不要我给你列一份最常用的魔术方法清单附带触发场景

相关推荐

Instant App Teams 团队协作指南:角色权限模型与成员邀请全流程解析
Instant App Teams 团队协作指南:角色权限模型与成员邀请全流程解析

后端数据库 【免费下载链接】instant Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love. 项目地址: https://gitcode.com/gh_mirrors/inst/i… · 2026/9/24 17:34:36

qml性能优化-信号槽
qml性能优化-信号槽

目录信号槽性能隐患1对多问题点解决问题耗时操作分段处理多线程处理耗时操作信号槽性能隐患 页面开发中,信号槽连接是必不可少的 如果我们不严谨的使用,槽函数执行耗时太长 就会产生页面卡顿,掉帧,长时间无响应等严重问题 建议是… · 2026/9/24 17:34:36

存储器分类:RAM 与 ROM
存储器分类:RAM 与 ROM

1. 引言在计算机组成原理里,存储器的分类方式有很多:按存储介质、按存取方式、按信息易失性、按读写功能……其中最经典、也最常被拿来讨论的一种分法,就是按 RAM 和 ROM 来划分。这里说的 RAM / ROM,主要是按读写特性和断电后数据… · 2026/9/24 17:34:30

脑肿瘤分割实战:2D/3D-UNet与VNet实现及生存预测模型解析
脑肿瘤分割实战:2D/3D-UNet与VNet实现及生存预测模型解析

简介:面向计算机相关专业学生与研究者的脑肿瘤分割毕设项目资料包,聚焦 3D-UNet、3D-VNet 与 2D-UNet 三种经典分割网络的算法实现与对比,并附带生存预测模型,覆盖从数据生成、模型训练到结果分析的完整流程,可直接用于… · 2026/9/24 18:12:55

HTML 的 <table> 元素
HTML 的 <table> 元素

1. 引言 在网页开发中&#xff0c;表格是展示结构化数据最直观的方式之一。无论是商品列表、成绩单、财务报表&#xff0c;还是后台管理系统的数据展示&#xff0c;<table> 元素都扮演着不可或缺的角色。本文将带你系统学习 HTML 表格的完整知识体系&#xff0c;从基础语… · 2026/9/24 18:12:55

联邦学习实战:VGG19、EfficientNet与ResNet50在分心驾驶检测中的对比
联邦学习实战:VGG19、EfficientNet与ResNet50在分心驾驶检测中的对比

简介&#xff1a;面向计算机相关专业学生与开发者&#xff0c;提供一份基于联邦学习的分心驾驶检测完整实现。项目使用VGG19、efficientnet与Resnet50三种网络对驾驶员状态数据集进行分类&#xff0c;并在联邦学习框架中引入Shapley值贡献评估与激励机制&#xff0c;兼顾模型精… · 2026/9/24 18:12:55

手撸RTSPClient:协议握手、重连降级与避坑指南
手撸RTSPClient:协议握手、重连降级与避坑指南

简介&#xff1a;这是一份面向嵌入式开发与流媒体协议学习者的轻量级RTSP客户端实现源码包&#xff0c;聚焦于RTSP协议核心交互逻辑的工程化实践&#xff0c;适用于C/C开发者快速掌握流媒体控制层开发要点。资源包含7个文件&#xff0c;以3个头文件&#xff08;.h&#xff09;定… · 2026/9/24 18:12:55

网易云音乐情感分类全流程:从数据集到模型实战
网易云音乐情感分类全流程:从数据集到模型实战

简介&#xff1a;这份资源是面向情感分析、文本挖掘与音乐推荐等方向研究者的网易云音乐情感分类数据集。数据约含39.5万条音乐情感标签记录&#xff0c;每条都包含歌曲ID、歌单ID与歌曲情感标签三个核心字段&#xff0c;可用于构建情感分类模型、开展音乐情绪分析及数据挖掘实… · 2026/9/24 18:12:54

Gemini语音模型升级,开发者怎么接
Gemini语音模型升级,开发者怎么接

做语音助手最难的地方&#xff0c;不是让机器开口说话&#xff0c;而是让它一边说话一边把事办了。过去很多方案把语音识别、对话模型和语音合成串成一条流水线&#xff0c;延迟叠加&#xff0c;打断后状态也容易丢。Gemini 新发布的 3.8 Live 和 3.8 Live Extended Thinking 直… · 2026/9/24 18:12:48

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介&#xff1a;面向时间序列数据建模的一维卷积神经网络完整实现&#xff0c;适合深度学习入门者及需要快速验证时序模型的研究者&#xff0c;能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小&#xff0c;只有3KB&#xff0c;内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L&#xff0c;而是舌尖上的L最近在几个方言群和语音教学社群里&#xff0c;反复看到有人发一句&#xff1a;“也说字母L&#xff1a;柔软的长舌”。初看以为是英语发音课笔记&#xff0c;点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码