任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~

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

打印操作会首先尝试__str__和str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。__repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str。它通常应该返回一个编码字符串,可以用来重新创建对象,或者给开发者详细的显示。

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

下面来看一个例子:

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def __str__(self):

return '(Person: %s, %s)' % (self.name, self.gender)

现在,交互式命令行下用 print 试试:

>>> p = Person('Bob', 'male')
>>> print p
(Person: Bob, male)
但是,如果直接敲变量 p:

>>> p
<main.Person object at 0x10c941890>
似乎__str__() 不会被调用。

因为 Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。

有一个偷懒的定义__repr__的方法:

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def __str__(self):
        return '(Person: %s, %s)' % (self.name, self.gender)
    __repr__ = __str__

「三分钟系列04」3分钟看懂Python黑魔法之__repr__和__str__相关推荐

  1. 「微服务系列 13」熔断限流隔离降级

    我们知道微服务分布式依赖关系错综复杂,比方说前端的请求转化为后端调用的服务请求,一个前端请求会转为成很多个后端调用的服务请求,那么这个时候后台的服务出现不稳定或者延迟,如果没有好的限流熔断措施,可能会 ...

  2. java和python的web自动化有什么区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  3. python和java一样吗-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  4. python和java的区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  5. 【转帖】十分钟经济学--让你看懂中国经济形势

    十分钟经济学--让你看懂中国经济形势 本文以最浅显的道理阐述经济的真相.还事实以清白,真相只有一个,让我们擦亮眼睛,洞观今天发生的一切.本文将在以下几方面阐述中国经济的真相. 1. 什么是经济发展? ...

  6. 一文看懂Python 爬虫 进阶(三)

    一文看懂Python 爬虫 进阶(三) 文章目录 一文看懂Python 爬虫 进阶(三) **猫眼电影(xpath)** **链家二手房案例(xpath)** **百度贴吧图片抓取** 这篇几乎都是代 ...

  7. 计算机主板的结构平面草图,10分钟浓缩10年 教你看懂主板基本结构

    什么?装机员又拿AM3的CPU往A88上面装了?隔壁老王又买了个H61来配i3-4160?这年头,玩DIY的人少,懂DIY的人也少,想当年啊--打住,还是不想当年了,来点实际的,10分钟浓缩10年,瞬 ...

  8. 「模型即服务AI」1分钟调用SOTA人脸检测,同时搭建时光相册小应用

    时光相册应用效果 团队模型.论文.博文.直播合集,点击此处浏览 一.物料 人脸检测:https://modelscope.cn/models/damo/cv_resnet101_face-detect ...

  9. 「低代码系列报道」华为云打造行业aPaaS集群,抢占SaaS发展黄金十年

    <中智观察>第1692篇推送 作者:木易 编辑:小宏 编审:杨小天 头图来源:财经头条 低代码.无代码作为可视化编程平台,在新冠疫情大爆发的催化下,正以惊人的速度在全球市场持续增长. 美国 ...

  10. 「低代码系列报道」百度爱速搭张建:未来2年中国低代码平台或将赶超国外头部厂商...

    <中智观察>第1667篇推送 作者:马一洋 编辑:小宏 编审:杨小天 头图来源:极客公园IT业界 低代码.无代码作为可视化编程平台,在新冠疫情大爆发的催化下,正以惊人的速度在全球市场持续增 ...

最新文章

  1. Nginx之windows下搭建
  2. 设计模式学习笔记一——开篇
  3. 影响程序性能的几个关键因素
  4. Python——四大内置高阶函数(map、reduce、filter、sorted)
  5. 如何使用 volatile, synchronized, final 进行线程间通信
  6. java的main是主线程吗_main函数是主线程吗
  7. Yii Framework的process flow分析
  8. MEncoder的基础用法—6.1. 选择编解码器及容器格式
  9. 锐起无盘4.2服务器设置,锐起无盘4.5免费版
  10. [AndroidO] [RK3399] -- CH341驱动移植
  11. WPS Office V15.3.2绿化版免费下载
  12. 211. 字符串置换
  13. 工作经验分享:为什么我们要写Unti Test
  14. Android设置TabLayout下划线宽度,靠谱版本!
  15. 35岁的程序员:第18章,私欲
  16. pytorch中的神经网络模块基础类——torch.nn.Module
  17. 解决js获取当前时间精确到秒并格式划成数字(20200712120610)
  18. 01-查看Navicat加密的数据库密码
  19. 主页被锁定为good.allxun.com的手工清除办法
  20. 电影《大长今》励志启示

热门文章

  1. vim 配置文件留存
  2. 《浪潮之巅》读书笔记——第6章 Microsoft
  3. Android开发中图表的使用
  4. .Net下采用Base64编码的一个封装好的类库
  5. HDU 6602 Longest Subarray (线段树)
  6. 运行roscore出现unable to contact my own server无法启动小海龟的部分故障问题解决
  7. 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
  8. JSTL核心标签库详解
  9. 剑指offer 树的子结构 python
  10. HttpClient短信接口