当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入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的世界。

欢迎大家批评指正,谢谢大家关注!

第8.13节 Python类中内置方法__repr__详解的更多相关文章

  1. 第8.14节 Python类中内置方法__str__详解

    一. object类内置方法__str__和函数str 类的内置方法__str__和内置函数str实际上实现的是同一功能,实际上str调用的就是__str__方法,只是调用方式不同,二者的调用语法如下 ...

  2. 第8.9节 Python类中内置的查看直接父类的__bases__属性

    终于介绍完了__init__方法和__new__方法,接下来轻松一下,本节介绍类中内置的__bases__属性. 一. 语法释义 Python 为所有类都提供了一个 bases 属性,通过该属性可以查 ...

  3. python -- 类中--内置方法

    isinstance 和  issubclass isinstance(obj,b)  检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...

  4. 第8.18节 Python类中内置析构方法__del__

    一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...

  5. 第8.6节 Python类中的__new__方法深入剖析:调用父类__new__方法参数的困惑

    上节<第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解>通过案例详细分析了两个方法的执行顺序,不知大家是否注意到了,在上述 ...

  6. Python 类的内置方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # p ...

  7. 第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解

    上节介绍了__new__()方法这个比构造方法还重要的方法的语法,本节通过案例来详细剖析__new__()方法的细节以及它与构造方法之间的关系. 一.    案例说明 本节以圆Cir类为例来说明,为了 ...

  8. python类的内置方法

    1,__init__(self) 初始化方法,实例化一个对象的时候就会被执行 2,__call__(self,*args) 把实例对象作为函数调用,即实例化一个对象后,在对象后面加括号即可调用__ca ...

  9. 第7.17节 Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析

    第7.17节  Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析 静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供. 一 ...

随机推荐

  1. 第一行代码中RecyclerView添加依赖库问题

    现在更新到 implementation 'com.android.support:recyclerview-v7:29.2.1' 记得点Sync Now来进行同步.

  2. Java安全之JNDI注入

    Java安全之JNDI注入 文章首发:Java安全之JNDI注入 0x00 前言 续上篇文内容,接着来学习JNDI注入相关知识.JNDI注入是Fastjson反序列化漏洞中的攻击手法之一. 0x01 ...

  3. MarkDown使用教程(In Atom)

    程序猿都爱写博客,在写博客的过程中,大量运用的就是MarkDown语法了.MarkDown不只是用来写博客,日常生活中的感悟.工作中的心得体会.项目任务安排等等大篇幅的文章都可以用MarkDown来迅 ...

  4. 【Azure微服务 Service Fabric 】使用az命令创建Service Fabric集群

    问题描述 在使用Service Fabric的快速入门文档: 将 Windows 容器部署到 Service Fabric. 其中在创建Service Fabric时候,示例代码中使用的是PowerS ...

  5. php 上传音频文件并获取时长

    <input type="file" name="audio" id="voice_file" style="display ...

  6. Pandas_数据清洗与整理_全

    # 数据清洗与整(全) # 1) 常见的数据清洗方法 # 2) 数据合并:多源数据的合并和连接 # 3) 数据重塑:针对层次化索引,学会 stack和 unstack # 4) 字符串处理:学会 Da ...

  7. 邻居子系统 arp 状态图

  8. C语言中的const用法

    Const是什么? const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程 ...

  9. Python自动玩"别再踩白块了"小游戏

    开发工具 Python版本:3.6.4 相关模块: numpy模块: CV2模块: pyautogui模块: pyscreenshot模块: 以及一些Python自带的模块. 环境搭建 安装Pytho ...

  10. Centos7安装Nginx详细步骤

    前言 Nginx 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 常用用途: ✓ 1. 反向代理 ✓ 2. 正向代理 这里我给来2张图,对正向代理与反响代理 ...