第8.13节 Python类中内置方法__repr__详解

【Python】详解类的 __repr__() 方法 引言 描述 object.__repr__(self) Called by the repr() built-in function to compute the “official” string representation of an object. If at all possible, this should look like a valid Python expression that could be used to recreate an object with the same val 阅读详情

当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入print(对象)或代码中print(对象)也会输出对象的信息,这些输出信息与两个内置方法:__str__方法和__repr__方法有关,这两个方法Python中的所有类型(新式类)的基类object中实现了这个通用的功能,本节详细分析__repr__方法。
一、 object类内置方法__repr__和函数repr
类的内置方法__repr__和内置函数repr实际上实现的是同一功能,实际上repr调用的就是__repr__方法,只是调用方式不同,二者调用的语法如下:
实例对象. repr()
repr(对象)

返回值为一个字符串对象,该字符串对象类似一种“官方”字符串表示,为什么说是”官方”呢,这是因为Python建议大部分情况下这个字符串应类似一个有效的 Python 表达式,能被用来重建具有相同取值的对象。如做不到至少应返回形如 <…someuseful description…>的字符串信息。 此方法通常被用于调试时显示详细的对象信息,便于开发者使用,因此需要尽可能确保其包含丰富完整的信息且无歧义。
二、 __repr__和函数repr方法的使用
由于object类定义了__repr__方法,因此所有类都会继承该方法,除非有自定义类重写了该方法。
什么情况下会触发__repr__方法呢?主要有如下情况会触发__repr__的调用:

  1. 在交互环境下直接输入对象名查看对象内容;
  2. 使用repr(对象)名查看对象内容;
  3. 直接调用“对象.repr()”方法;
  4. 列表以及字典等容器总是会使用 repr 方法,即使使用下节要介绍的“str(对象)”访问方式也不例外
    三、 案例
    1.案例说明
    使用一个自定义类Car的实例对象和一个列表来查看与__repr__相关的调用情况。
    2.案例代码
    1)类Car定义
class Car():  
    def __init__(self,brand,type,color,weight,oilcostper100km):
        self.brand = brand
        self.type = type
        self.oilcostper100km = oilcostper100km
        self.color = color
       	self.weight = weight

2)实例car定义及查看相关内容(交互模式)

car = Car('雪佛兰','科帕奇','白色',1.8,10)
car
repr(car)
car.__repr__()

3)列表对象的查看

l=[1,2,3,4]
l.__repr__()
repr(l)
l
  1. 案例截图
    在这里插入图片描述
  2. 案例说明
    从上述案例情况来看,自定义类通过__repr__返回的内容都是一样,都是说明该变量的类型和ID,这些数据不能直接重建具有相同取值的对象。
    列表对象返回的是列表的详细内容,这些数据可以直接重建具有相同取值的对象。

本节老猿详细剖析了类的内置方法 repr(),并结合案例进行了验证,后续章节将介绍与此相关的__str__()方法,并结合案例说明自定义类怎么重写__ repr__()方法。
老猿Python系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
欢迎大家批评指正,谢谢大家关注!

SAP STRANS与XML格式转换实战:从ABAP数据结构设计到Transformation模板开发 在SAP与外部系统的数据交换中,XML和JSON等结构化数据格式的转换是常见需求。STRANS(Simple Transformation)作为SAP提供的声明式映射工具,通过模板定义ABAP数据与XML之间的对应关系,由运行时引擎自动完成序列化和反序列化。相比手写解析代码或XSLT,STRANS直接面向ABAP数据结构,具有代码量少、可读性好、维护成本低等优势。它支持双向转换,适用于采购订单导出、IDoc处理、ABAP Proxy集成等场景。本文深入解析STRANS的核心机制、ABAP数据结构设计原则、T 阅读详情

相关推荐

Python类中的内置方法__repr__详解

其中一个特殊的内置方法是__repr__,它用于定义对象的字符串表示形式。在本文中,我们将详细解释__repr__方法的作用和用法,并提供相应的源代码示例。总结一下,__repr__方法是Python类中的一个特殊方法,用于定义对象的字符串表示形式。__repr__方法是Python类中的一种特殊方法,用于返回一个对象的"官方"字符串表示形式。此外,__repr__方法还可以用于调试目的。正如我们在上面的示例中看到的那样,当我们直接输入对象名称时,__repr__方法会自动调用并返回对象的字符串表示形式。

HackNebulaZ的博客 1286

python 中的 __repr__() 方法

__repr__ __repr__() 是 Python 类中的一个特殊方法,由 object 对象提供,由于所有类都是 object 类的子类,所以所有类都会继承该方法。 该方法主要实现 “自我描述” 功能——当直接打印类的实例化对象时,系统将会自动调用该方法,输出对象的自我描述信息,用来告诉外界对象具有的状态信息。 但是,object 类提供的 __repr__() 方法总是返回一个对象(类名 + obejct at + 内存地址),这个值并不能真正实现自我描述的功能!如下: 注: 输出实例化的 P

kezhou的博客 1万+

Python重写自定义类的__repr__方法

方法应该返回一个字符串,该字符串应该是一个合法的Python表达式,通过使用该表达式可以重新创建出一个与原始对象完全相同的新对象。方法,我们可以更好地控制类的实例在被打印时的字符串表示形式,使其更加有用和可读。然而,有时候我们希望自定义这个字符串表示形式,以便更好地展示对象的状态和属性。这样的表示形式更加清晰和有用,可以更好地展示对象的状态。的特殊方法,用于定义该类的实例在被打印时的字符串表示形式。的方法,并在该方法中返回我们期望的字符串表示形式。的类,表示二维平面上的一个点。在上面的示例中,我们使用。

DevAstro的博客 235

Python中的魔法方法__repr__和__str__详解

当我们直接打印一个python类对象时,得到的通常是类似“”这样一段字符,无法获得对象的具体状态。这个时候我们就可以重新定义/重写对应类的魔术方法__repr__和__str__,使得我们在打印对象时能够获得对象的当前状态信息。

gemingxuan的博客 3587

Verilog实战:手把手教你实现四路组相联Cache(附完整代码解析)

本文提供了一份详细的Verilog实战指南,手把手教你实现一个四路组相联Cache。内容涵盖从设计规格、核心存储阵列、LRU替换策略到状态机设计的完整流程,并附有代码解析与优化技巧,旨在帮助硬件设计者掌握Cache控制器的RTL实现与调试方法。

pp12345的博客 516

手把手教你用Cursor + 自定义MCP工具链,让AI帮你搞定App逆向(附adb-mcp/frida-mcp源码)

本文详细介绍了如何利用Cursor IDE与自定义MCP工具链构建AI驱动的App逆向工作流,涵盖adb-mcp和frida-mcp的源码实现与实战应用。通过自然语言指令,AI可自动化完成设备控制、动态Hook和数据分析,显著提升移动安全测试效率。适合安全研究人员和开发者快速掌握智能逆向技术。

weixin_33737134的博客 1301

python __repr__方法_第8.13节 Python类中内置方法__repr__详解

当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入print(对象)或代码中print(对象)也会输出对象的信息,这些输出信息与两个内置方法:__str__方法和__repr__方法有关,这两个方法Python中的所有类型(新式类)的基类object中实现了这个通用的功能,本节详细分析__repr__方法。一、object类内置方法__repr__和函数repr类的内置方法__rep...

weixin_39943992的博客 202

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是对于yaml文件是如何输入到模型里,模型如何将yaml文件解析出来的确是不知道的,本文的内容接上一篇的代码逐行解析(一) 项目目录分析,本文对于小白来说非常友好,非常推荐大家进行阅读,深度的了解模型的工作原理已经流程,下面我们从yaml文件来讲解。

Snu77的博客 1万+

第8.15节 Python重写自定义类的__repr__方法

一、 引言 前面两节分别介绍了Python类中的__str__和__repr__方法的作用和语法,所有新式类都支持这两个方法,因为object类实现了这两个方法,但实际上各位开发者在自定义类的过程中,应该重写相关方法,特别是__str__输出的应该是用户关注的容易理解的信息,因此对那些负责与客户交互的类,至少更应该重写__str__方法。 二、 重写__repr__方法 object类提供的__r...

老猿Python 4087

基于单光子探测的高重频多通道符合测距

TDC专栏之基于单光子探测的高重频多通道符合测距

sdau2005的博客 1202

卫星遥感影像处理:地物分类与变化检测

卫星遥感影像处理:地物分类与变化检测​ ,人工智能,计算机视觉,大模型,AI,卫星遥感技术通过搭载在卫星上的传感器获取地球表面的电磁波信息,为地物分类与变化检测提供了宏观、动态的观测数据。随着高分辨率遥感卫星(如高分系列、哨兵系列)的发展,遥感影像的空间分辨率、光谱分辨率和时间分辨率不断提升,为精准地物识别和动态变化监测奠定了基础。地物分类旨在将遥感影像中的像元按地表覆盖类型(如植被、水体、建筑、农田等)进行分类,而变化检测则通过对比不同时期的影像,识别地表覆盖的变化区域(如城市扩张、森林砍伐、土地退化等)

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

第8.25节 Python风格的__getattribute__属性访问方法语法释义及使用

一、 引言 在《第8.13节 Python类中内置方法__repr__详解》老猿介绍了在命令行方式直接输入“对象”就可以调用repr内置函数或__repr__方法查看对象属性数据,实际上该过程除了调用repr内置函数或__repr__方法外,还调用了一个内置方法__getattribute__,正是通过该方法Python获取了对象的信息进行输出。 二、 __getattribute__语法释义 ...

老猿Python 3346

详解vit_base_patch16_224

ViT-Base模型的核心思想是将输入图像划分为多个小块(patches),并使用Transformer架构来处理这些小块。具体来说,ViT-Base使用16x16像素的patch大小,输入图像的尺寸为224x224像素,这意味着每张图像将被划分为49个patch(22416×22416=14×14=19616224​×16224​=14×14=196个patch)。ViT-Base(ViT-B/16)通过将图像处理任务转化为序列处理任务。

具身机器人和通用AI 3227

第8章 Python类中常用的特殊变量和方法目录

第8章 8.1节 Python类中常用的特殊变量和方法 第8.2节 Python类的__init__方法深入剖析:构造方法案例详解 第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解 第8.4节 Python类中不是构造方法却胜似构造方法的__new方法__深入剖析:语法释义 第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执...

老猿Python 1557

PCB_Project.PrjPcb 4 Not in version control

Altium Designer中PCB项目出现"NOT in version control"错误的解决方法:1. 禁用不需要的版本控制集成(DXP→Preferences→Version Control);2. 清理项目缓存(Projects面板右键→Clean Project);3. 检查文件读写权限;4. 如无效可新建项目重新添加文件。如需使用SVN版本控制,需正确配置SVN客户端路径,创建或连接SVN仓库,并将项目文件提交至版本控制系统。注意新建SVN仓库必须使用空目录,建议使用

whm128的博客 1597

webrtc+uniapp(h5和app)实现在线聊天功能 uniapp+网页+服务端源码

uniapp端代码 服务端代码 public/index.html

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 754

30-Python内置方法之__str__和__repr__

定义一个类,然后实例化,观察打印结果: 1 >>> class Person(object): 2 ... def __init__(self, name, age): 3 ... self.name = name 4 ... self.age = age 5 ... 6 >&g...

diyuncuo7229的博客 140

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python对象字符串表示:__str__与__repr__方法详解与实践

在Python面向对象编程中,对象的字符串表示是调试和日志记录的基础。其核心原理是通过特殊方法控制对象在打印或转换时的输出行为。掌握这一技术能显著提升代码可读性和调试效率,是Python开发者必备技能。__str__方法用于生成用户友好的描述,适用于print()和str()场景;而__repr__方法则提供开发者所需的精确、无歧义的表示,常用于调试和交互式环境。在工程实践中,合理实现这两个方法能有效解决默认内存地址显示不直观的问题,并避免循环引用等常见陷阱。本文以Python对象字符串表示为主题,深入讲解

weixin_34130389的博客 415

pscad IEEE标准系统搭建说明

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python中repr(变量)和str(变量)的返回值有什么区别和联系

Python中repr(变量)和str(变量)都返回一个描述对象的字符串,二者有关联又有不同。由于Python3.0后都是新式类,我们的分析也是基于新式类进行的。基于object派生的新式类中二者之间的关联关系如下: 1、这两个函数分别对应object类内置的特殊方法__repr__和__str__; 2、缺省情况下二者返回值相同,这是因为object类中,__str__方法调用的就是__repr...

老猿Python 3146

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python常见的内置函数

dir、open、staticmethod、enumerate、int、ord/chr、eval/exec、isinstance、dict、help、getattr/setattr、hex、next、id、sorted、bin、filter、pow、super、iter、print、tuple、callable、format、len、frozenset、range、classmethod、repr、zip、round、hash、set、map...

克里斯蒂亚诺 1万+

面向对象之反射及内置方法

一、静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点:类方法必须有一个cls参数表示这个类,可以使用类属性静...

小琳的博客 106

关于Python str()和repr()的区别浅谈

这篇文章主要介绍了通过实例了解Python str()和repr()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。其实用处就是最大的区别了:str()主要用来为终端用户输出一些信息,而repr()主要用来调试;本文主要介绍了通过实例了解Python str()和repr()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。以上就是本文的全部内容,希望对大家的学习有所帮助。

xiaoweids的博客 155

python 内置方法赋值_python-函数内置方法

实例 11 >>>exec 'print "Hello World"'2 Hello World3 #单行语句字符串4 >>> exec "print 'runoob.com'"5 runoob.com67 #多行语句字符串8 >>> exec """...for i in range(5):9 ... print "iter time: ...

weixin_33331021的博客 292
上一篇: Python中splitlines方法判断文本中一行结束除了回车换行符是否还有其他字符?
下一篇: Python中判断字符串是否为数字、字母、标识符、浮点数、大小写、可打印的方法
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值