「三分钟系列04」3分钟看懂Python黑魔法之__repr__和__str__
任何关于算法、编程、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__相关推荐
- 「微服务系列 13」熔断限流隔离降级
我们知道微服务分布式依赖关系错综复杂,比方说前端的请求转化为后端调用的服务请求,一个前端请求会转为成很多个后端调用的服务请求,那么这个时候后台的服务出现不稳定或者延迟,如果没有好的限流熔断措施,可能会 ...
- java和python的web自动化有什么区别-三分钟看懂Python和Java的区别
随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...
- python和java一样吗-三分钟看懂Python和Java的区别
随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...
- python和java的区别-三分钟看懂Python和Java的区别
随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...
- 【转帖】十分钟经济学--让你看懂中国经济形势
十分钟经济学--让你看懂中国经济形势 本文以最浅显的道理阐述经济的真相.还事实以清白,真相只有一个,让我们擦亮眼睛,洞观今天发生的一切.本文将在以下几方面阐述中国经济的真相. 1. 什么是经济发展? ...
- 一文看懂Python 爬虫 进阶(三)
一文看懂Python 爬虫 进阶(三) 文章目录 一文看懂Python 爬虫 进阶(三) **猫眼电影(xpath)** **链家二手房案例(xpath)** **百度贴吧图片抓取** 这篇几乎都是代 ...
- 计算机主板的结构平面草图,10分钟浓缩10年 教你看懂主板基本结构
什么?装机员又拿AM3的CPU往A88上面装了?隔壁老王又买了个H61来配i3-4160?这年头,玩DIY的人少,懂DIY的人也少,想当年啊--打住,还是不想当年了,来点实际的,10分钟浓缩10年,瞬 ...
- 「模型即服务AI」1分钟调用SOTA人脸检测,同时搭建时光相册小应用
时光相册应用效果 团队模型.论文.博文.直播合集,点击此处浏览 一.物料 人脸检测:https://modelscope.cn/models/damo/cv_resnet101_face-detect ...
- 「低代码系列报道」华为云打造行业aPaaS集群,抢占SaaS发展黄金十年
<中智观察>第1692篇推送 作者:木易 编辑:小宏 编审:杨小天 头图来源:财经头条 低代码.无代码作为可视化编程平台,在新冠疫情大爆发的催化下,正以惊人的速度在全球市场持续增长. 美国 ...
- 「低代码系列报道」百度爱速搭张建:未来2年中国低代码平台或将赶超国外头部厂商...
<中智观察>第1667篇推送 作者:马一洋 编辑:小宏 编审:杨小天 头图来源:极客公园IT业界 低代码.无代码作为可视化编程平台,在新冠疫情大爆发的催化下,正以惊人的速度在全球市场持续增 ...
最新文章
- Nginx之windows下搭建
- 设计模式学习笔记一——开篇
- 影响程序性能的几个关键因素
- Python——四大内置高阶函数(map、reduce、filter、sorted)
- 如何使用 volatile, synchronized, final 进行线程间通信
- java的main是主线程吗_main函数是主线程吗
- Yii Framework的process flow分析
- MEncoder的基础用法—6.1. 选择编解码器及容器格式
- 锐起无盘4.2服务器设置,锐起无盘4.5免费版
- [AndroidO] [RK3399] -- CH341驱动移植
- WPS Office V15.3.2绿化版免费下载
- 211. 字符串置换
- 工作经验分享:为什么我们要写Unti Test
- Android设置TabLayout下划线宽度,靠谱版本!
- 35岁的程序员:第18章,私欲
- pytorch中的神经网络模块基础类——torch.nn.Module
- 解决js获取当前时间精确到秒并格式划成数字(20200712120610)
- 01-查看Navicat加密的数据库密码
- 主页被锁定为good.allxun.com的手工清除办法
- 电影《大长今》励志启示