看下面的例子就明白了

class Test(object):

def __init__(self, value='hello, world!'):

self.data = value

>>> t = Test()

>>> t

<__main__.Test at 0x7fa91c307190>

>>> print t

<__main__.Test object at 0x7fa91c307190>

看到了么?上面打印类对象并不是很友好,显示的是对象的内存地址

下面我们重构下该类的__ repr__以及str,看看它们俩有啥区别

# 重构__repr__

class TestRepr(Test):

def __repr__(self):

return 'TestRepr(%s)' % self.data

>>> tr = TestRepr()

>>> tr 直接终端显示,不print就是面向程序员

TestRepr(hello, world!)

>>> print tr print是面向程序员

TestRepr(hello, world!)

重构__ repr__方法后,不管直接输出对象还是通过print打印的信息都按我们repr方法中定义的格式进行显示了

# 重构__str__

calss TestStr(Test):

def __str__(self):

return '[Value: %s]' % self.data

>>> ts = TestStr()

>>> ts

<__main__.TestStr at 0x7fa91c314e50>

>>> print ts

[Value: hello, world!]

你会发现,直接输出对象ts时并没有按我们str方法中定义的格式进行输出,而用print输出的信息却改变了

repr和str这两个方法都是用于显示的,str是面向用户的,而repr面向程序员。

打印操作会首先尝试str和str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。

__ repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用str,会使用print和str。它通常应该返回一个编码字符串,可以用来重新创建对象,或者给开发者详细的显示。

当我们想所有环境下都统一显示的话,可以重构repr方法;当我们想在不同环境下支持不同的显示,例如终端用户显示使用str,而程序员在开发期间则使用底层的repr来显示,实际上str只是覆盖了repr以得到更友好的用户显示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python中的repr是什么意思_Python中__repr__和__str__区别详解相关推荐

  1. python中 str 和 repr_Python中__repr__和__str__区别详解

    看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): self.data = value >> ...

  2. python中search和match的区别_Python中正则表达式match()、search()函数及match()和search()的区别详解...

    match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找 ...

  3. python 文件读写with open模式r,r+ w,w+ a,a+区别详解

    python 文件读写with open模式r,r+ w,w+ a,a+区别详解 python中的 with open主要要来进行文件读写的操作 在 Python 中使用文件的关键函数是 open() ...

  4. python中rand和randn_基于numpy.random.randn()与rand()的区别详解

    下面为大家分享一篇基于numpy.random.randn()与rand()的区别详解,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 numpy中有一些常用的用来产生随机数的函数,randn ...

  5. python循环括号_Python3中小括号()、中括号[]、花括号{}的区别详解

    介绍 在python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的python基本内置数据类型. 小括号() python中的小括号(): 代 ...

  6. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  7. python中for in range的用法_Python for i in range ()用法详解

    for i in range ()作用: range()是一个函数, for i in range () 就是给i赋值: 比如 for i in range (1,3): 就是把1,2依次赋值给i r ...

  8. python中 for i in range(10)_Python for i in range ()用法详解

    for i in range ()作用: range()是一个函数, for i in range () 就是给i赋值: 比如 for i in range (1,3): 就是把1,2依次赋值给i r ...

  9. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

最新文章

  1. mustache 渲染文本一直渲染不出来
  2. python字符串使用技巧
  3. python开发基础作业02:三级菜单,使用字典dic及列表
  4. jdbc连接池工作原理_JDBC连接实际上如何工作?
  5. c语言不定长参数函数,DEFUN 如何定义支持不定长参数的函数
  6. 常见的5个Java测试框架和工具
  7. 法兰克焊接机器人编程入门_焊接机器人编程入门与编程技巧介绍
  8. 有DMX512协议控制的整套硬件解决方案吗?来看一下,舞台灯光同步视频播放DMX控制台
  9. Google 应用与游戏出海 8 月刊: 遨游出海季,共创新增长 (上)
  10. Webpack打包UMD的export要带default访问问题
  11. 807. 区间求和(acwing水题记)
  12. 创建型模式——原型模式(Prototype Pattern)
  13. 徒步西藏旅游攻略之岗仁波齐神山之行
  14. 计算机毕业设计SSM大学生体检管理系统【附源码数据库】
  15. 北京人都是什么文案鬼才,被他们的抗阳段子笑死了
  16. Striped64 深入源码解析
  17. PTA(三十三)面向对象程序设计 第五章 作业 7-4 分钟秒钟的时间相减 (30 point(s))
  18. Oracle AWR报告详细分析
  19. MATLAB | 我用MATLAB制作了一款伪3D第一视角迷宫小游戏
  20. 他在自己的荣光中如此孤独,孤独地连一个敌人都没有剩下。

热门文章

  1. 2022-2028年中国FNG硅胶行业市场研究及前瞻分析报告
  2. jupyter qtconsole 配置文件的生成和修改
  3. python装饰器学习
  4. 矩阵拼接 cat padding_pytorch
  5. Navicat导出表结构导出成Excel
  6. 嵌入式传感器是智能移动增长的关键
  7. 虚拟纹理与几何图像技术
  8. H.265视频编码与技术全析(上)
  9. 加密算法有哪些?对称加密和非对称加密的区别?
  10. 2021年大数据Flink(四十一):​​​​​​​Flink实现订单自动好评