python魔术方法(dunder method)__len__, __getitem__, __repr__等

python杂记——魔法方法 什么是魔法函数 python中有哪些魔法函数 阅读详情

python里这些特殊方法的存在是为了被python解释器调用的,自己并不需要调用他们,不存在my_object.__len__()这种写法,而应该使用 len(my_object),用户通过使用len()这种通用的方法,解释器去调用__len__()方法。

这里len需要多说两句:

在执行 len(my_object) 的时候,如果 my_object 是一个自定义类的对象,那么 Python 会自己去调 用其中由你实现的__len__()方法。 然而如果是 Python 内置的类型,比如列表(list)、字符串(str)、字节序列(bytearray) 等,那么 CPython 会抄个近路,__len__ ()实际上会直接返回 PyVarObject 里的 ob_size 属 性。PyVarObject 是表示内存中长度可变的内置对象的 C 语言结构体。直接读取这个值比调用一个方法要快很多。

所以如果x是个内置对象,对它求len()会很快,len()不是普通方法不是简单的for循环遍历求个数。

通过内置的函数(例如 len、iter、str,等等)来使用特殊方法是最好的选择。

__getitem__()让对象变成可迭代的,可以用[]这种操作

__repr__()是返回对象的字符串描述,__repr__和 __str__的区别在于,后者是在 str() 函数被使用,或是在用 print 函数打印 一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好

【python学习】python魔术方法大全!附代码示例 Python 中的魔术方法(Magic Methods),也称为双下划线方法(Dunder Methods),是特殊的方法,允许对象与内置函数和操作符进行交互。 阅读详情

相关推荐

Python中的魔术方法(Dunder Methods)深度解析与实战应用

Python Dunder方法全解析 Dunder方法(双下划线方法)是Python中用于自定义对象行为的特殊方法,如__init__、__str__等。这些方法允许类实现类似内置类型的功能,包括初始化、字符串表示、运算符重载、上下文管理等。常见应用包括: 基础方法:__init__初始化对象,__str__提供可读字符串表示 运算符重载:通过__add__等实现自定义运算 上下文管理:__enter__和__exit__实现资源管理 容器模拟:__getitem__、__setitem__实现字典/列表式

静水深流 1014

Python的魔法函数(magic methods)或者特殊方法(Dunder methods)

决定梳理这个内容是因为一个课程, 课程ppt:https://github.com/minitorch/slides 使用的时候,下载下来,把index.html文件拖到浏览器,然后方向键下键,ppt以网页形式播放) 1. Python语言的魔法函数 简单来说,在python中,任何以__开头和结尾的函数,都是魔法函数,例如:__init__就是一种魔法函数。 它可以重载默认函数的行为 特殊方法以两个下划线开始,两个下划线结尾。于是乎特殊方法也叫双下方法(dunder method)。dunder,即

啷个哩个啷 5223

Python的双下方法(dunder methods)

Python的魔法函数(Magic Functions),又称为双下方法(dunder methods),是一些具有特殊名称的函数,它们以双下划线()开始和结束。这些函数是Python对象模型的一部分,用于实现和自定义对象的行为,如迭代、比较、属性访问等。以下是一些常见的魔法函数及其用途的详细解读:这些魔法函数是Python面向对象编程的核心部分,它们使得Python的对象可以自定义和扩展内置操作的行为。开发者可以通过重写这些方法来实现自己的数据类型和行为。以下是一些Python魔法函数的具体使用示例: 2

zhangzhechun的专栏 577

特殊方法(dunder-method)

特殊方法(dunder-method) 特殊方法名称 基本定制 自定义属性访问 描述符协议 特殊属性 处理属性的内置函数 容器类型 序列协议 迭代器协议 上下文管理器协议 子类检查 自定义类创建 解析MRO条目 可调用对象 数字类型 1 特殊方法名称 一个类可以通过定义具有特殊名称的方法来实现由特殊语法所引发的特定操作 (例如算术运算或下标与切片)。这是 Python 实现操作符重载的方式,允...

L_zzwwen的博客 1885

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

手把手教你用8位单片机IO口直接驱动WS2812灯带(附完整代码和避坑指南)

本文详细介绍了如何使用8位单片机IO口直接驱动WS2812灯带,包括硬件准备、时序生成、色彩引擎与特效算法的实现,以及调试技巧与性能优化。通过汇编语言优化和精确时序控制,实现高效的LED驱动和炫酷的彩虹灯效,适合嵌入式开发者和硬件爱好者参考。

weixin_42696271的博客 304

【Python】魔法方法(Magic Methods / Dunder Methods)有哪些:分类汇总

Python的魔法方法(也称双下划线方法)是以__开头和结尾的特殊方法,魔法方法主要用于运算符重载、对象行为控制、迭代协议、上下文管理等。对象构造:__init__、__new__;字符串表示:__str__、__repr__;运算符重载:__add__、__sub__等;比较运算:__lt__、__eq__等;属性访问:__getattr__、__setattr__;容器行为:__getitem__、__setitem__;迭代协议:__iter__、__next__;上下文管理:__enter__、__

彬彬侠的博客 928

Unity中的坐标系及其转换方法

Unity中的坐标系及其转换方法 Unity中有四种坐标系: 1.全局坐标系 World Coordinate System 全局坐标系是用于描述场景内所有物体位置的方向的基准,也称为世界坐标系,Unity中创建的物体都是以全局坐标系中的坐标原点(0,0,0),来确定各自的位置的,可以使用transform.position来获取游戏对象的世界坐标。 2.局部坐标系 Local Coordinate System 局部坐标系也称为模型坐标系或物体坐标系,每个物体都有自身独立的物体坐标系。当物体移动或改变方向

Z_hongli的博客 8178

Dunder 方法 | Pydon‘t

Python 是一种具有丰富内置函数和运算符的语言,它们可以很好地与内置类型配合使用。例如,运算符可以3.3但是,是什么定义了数字(整数和浮点数)的加法和列表、元组、字符串的连接?如果我想处理其他类型怎么办?我可以这样做吗?简短的回答是“是”,这通过dunder 方法实现,这是本篇 Pydon’t 中的研究对象。在本篇 Pydon’t 中,你将了解什么是 dunder 方法;为什么它们被这样称呼;了解各种有用的 dunder 方法;了解哪些 dunder 方法与哪些内置方法相对应;

320

继电保护原理1.2-反时限过流保护

反时限过流保护

让你爱上电路设计 1万+

LeRobot 入门教程(十)LIBERO 机器人终身学习评估

LIBERO是一项专注于机器人终身学习(LLDM)的基准测试平台,包含130项任务,分为5大套件(空间推理、物体操作、目标约束等)。LeRobot框架已集成LIBERO,支持单/多套件评估,并兼容SmolVLA模型。训练需使用预处理数据集(HuggingFaceVLA/libero),观测数据需符合规范(8维状态+双摄像头图像)。该平台采用MuJoCo模拟,支持无头服务器运行,旨在推动机器人持续学习算法的发展与标准化评估。

2506_90492529的博客 1662

python 数据模型_第一章Python 数据模型

数据模型其实是对Python框架的描述,它规范了这门语言自身构建模块的接口,这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。magic and dunder:魔术方法(magic method)是特殊方法的昵称。有些开发者在提到__getitem__这个特殊方法的时候,会用诸如“下划线--下划线--getitem”这种说法。但会引起歧义,因为像__x这种命名在Python里面也有其他含义...

weixin_39993454的博客 148

Halcon那些事:Halcon缺陷检测检测印刷数字完整性

创建模板 create_shape_model模板匹配 find_shape_model。

十多年IT经验,专注机器视觉,智能制造半导体行业 764

Python 基础入门:Java 开发者视角

Python与Java核心概念差异对比 摘要 本文面向有Java经验的开发者,通过对比两种语言的核心概念差异,帮助快速建立Python的正确思维模型。主要内容包括: 环境与工具链:Python使用VS Code开发、pip/poetry管理依赖,强调虚拟环境隔离 核心概念对比: 类型系统:Java是静态强类型,Python是动态强类型 执行方式:Java需要编译,Python直接解释执行 入口点:Java强制main方法,Python通过if __name__ == "__main__":实现可选入口 模块

m0_54123999的博客 262

【系统分析师】高分论文:论软件开发方法及应用(数据中心CMDB 系统)

【摘要】本文以作者负责的"数据中心CMDB系统"建设项目为例,探讨了系统分析和建模方法在IT项目中的应用实践。项目基于ITIL框架,旨在整合分散的配置信息,构建统一CMDB平台。通过分析结构化、面向对象和构件化三种开发方法特点,项目最终采用结构化分析与V模型结合的方式,并融入面向对象设计理念。系统经过4个月开发后上线,通过增量迭代满足不同数据源接口需求,采用适配器模式提高兼容性。经过2个月试点运行和优化,系统已稳定运行并获得用户认可,为后续IT服务管理集成奠定了基础。项目实施使作者积累了

数据知道的博客 4299

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python:魔术方法(__getitem__、__len__等包含双下划线构成的方法)的简介、使用案例之详细攻略

Python:魔术方法(__getitem__、__len__等包含双下划线构成的方法)的简介、使用案例之详细攻略目录魔术方法Magic Method的简介(1)、举例理解Magic Method常用的魔术方法使用案例1、常用方法(1)、__init__:初始化方法(2)、__len__():返回容器中元素的个数2、比较操作符(1)、__lt__(self, other):定义小于号的行为3、算数运算符(1)、__add__(self, other):定义加法的行为:+4、增量赋值运算(1)、__iadd_

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3079

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

探索Python中的魔术方法:让代码更Pythonic

魔术方法,也称为双下方法(dunder methods),是Python中一些特殊的方法,它们通常以双下划线开头和结尾。这些方法在特定的情况下被Python解释器自动调用,无需显式调用。当对象用作字典的键或需要哈希值时,需要定义__hash__方法。__str__和__repr__方法允许你定制对象的字符串表示。

无远弗届 1247

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python魔术方法

魔术方法(Magic Methods),又称为双下划线方法(Dunder Methods),是Python中以双下划线开头和结尾的方法,例如__init__和__str__。它们允许我们自定义类在特定情况下的行为,例如使用运算符、内置函数或特定Python语句时。通过魔术方法,我们可以使类的行为更像内置类型,提供更丰富的接口。

Bin_Dut的博客 1527

【Python】魔法函数

魔法函数简介

好记性不如烂笔头 2314

Python dunder/magic 方法

在 Python 中,我们经常会看到被双下划线包围的属性名和方法名,比如 __init__,__repr__,__future__,__all__,__version__,__author__。在发明 dunder 之前, __init__ 要念作 double underscore init,其中的double underscore 有17个单词,发音是6声(嘴或舌头要变换7次动作,你可以以试试),而dunder 只有6个单词,发音是2声。(中文双下划线)的缩写,分别取。但是,object 类提供的。

泠山的博客 728

特殊方法(魔法方法)

特殊方法以及如何使用特殊方法? (此篇部分摘自书籍《流畅的python》,推荐下这本书,写的挺好的) 魔法方法(dunder method)是特殊方法的昵称。有些Python开发者在提到__getitem__这个特殊方法的时候,会用诸如“下划线-下划线-getitem”这种说法,但是显然这种说法会引起歧义,因为像__x这种命名在 Python 里还有其他含义,但是如果完整地说出“下划线-下划线...

windows下搭建virtualenv、virtualenvwrapper虚拟环境 490

什么是python中的魔术方法?

魔术方法是以双下划线(__)开头和结尾的方法,例如__init____str____add__等。这些方法在特定的情况下会被Python解释器自动调用,从而实现特定的功能。魔术方法是Python中非常强大和灵活的特性,通过自定义这些方法,我们可以让类的行为更加符合我们的需求。掌握这些方法的使用,对于编写高质量的Python代码非常重要。

xycxycooo的博客 616

Python魔法函数(Magic Methods简介

在这段代码中,`42` 这个值的传递关系如下: 当创建对象 `my_object = MyClass(42)` 时,`42` 作为参数被传递给了 `MyClass` 类的 `__init__` 方法。当执行 `str(my_object)` 或 `print(my_object)` 时,会调用 `__str__` 方法,在 `__str__` 方法中通过 `self.value` 访问到了之前存储的 `42` 值,并将其用于生成返回的字符串 `My value is 42`。

zhendianluli的博客 1696

【Python基础 | 第八篇】魔法函数(Dunder Methods)核心详解

【Python基础 | 第八篇】魔法函数(Dunder Methods)核心详解

程序员码小跳 4116

Python 面试时千万别这样命名函数,因为这个被淘汰可太不值了

本文主要介绍了以下知识点。Python 的代码风格指南(PEP8)是 Python 好好学习的参考手册,这里介绍一个支持库,叫 autopep8,大家可以安装使用。Python 标识符的命名基本规则。Python 函数/方法命名的基本规则与示例。下划线在标识符命名中的特殊作用。函数与其他标识符的命名的异同。总之,Python 标识符的命名很重要,既涉及代码可读性,也涉及开发团队的协作,大家一定要规范命名。

leyang0910的博客 1322
上一篇: C++中的四种多态 (The Four Polymorphisms in C++翻译)
下一篇: python的容器序列和扁平序列
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值