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

当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入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的世界。
欢迎大家批评指正,谢谢大家关注!

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LaoYuanPython

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

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

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

打赏作者

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

抵扣说明:

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

余额充值