__repr__,被内置函数repr用于把一个对象用"官方"的字符串形式表示出来(终端友好)

1、值传给eval()来返回一个对象的字符串表示形式

2、否则返回一个尖括号括起来的字符串,包含了对象类型的名称和附加的信息通常包括对象的名称和地址

3、一个类可以通过 __repr__方法来控制它的实例返回内容(也就是以上两点都通可以通过__repr__方法来定制)

4、返回 Unicode 字符串(str 类型)

__str__,被str(object) 和内置函数format()和print() 返回一个对象的'非正式'字符串形式(用户友好)

1、返回一个对象的字符串版本,如果对象没有提供,会返回空字符串,

2、对于字符串,会返回字符串本身,如果对象没有提供__str__方法,会使用__repr__方法(也就是repr(object))来提供返回值

3、返回 Unicode 字符串(str 类型)

例子:

这是django query的源码部分,使用__repr__来返回一个对象和查询的数据切片:

def __repr__(self):

data= list(self[:REPR_OUTPUT_SIZE + 1])if len(data) >REPR_OUTPUT_SIZE:

data[-1] = "…(remaining elements truncated)…"

return '' % (self.__class__.__name__, data)

注意:这里用到了%r,会返回数据的标准字符串形式,它和%s的区别看下面的例子:

In [58]: repr(datetime.datetime.now())

Out[58]: 'datetime.datetime(2018, 9, 13, 15, 22, 22, 124128)'In [59]: str(datetime.datetime.now())

Out[59]: '2018-09-13 15:22:26.310367'

再来看下__str__和__repr__的实现:

In [68]: classexample:

...:def __str__(self):

...:return 'str'...:def __repr__(self):

...:return 'repr'...:

In [69]: a=example()

In [70]: print(a)

str

In [71]: a

Out[71]: repr

In [74]: '{}'.format(a.__str__())

Out[74]: 'str'In [75]: '{}'.format(a.__repr__())

Out[75]: 'repr'

如果对象没有__str__方法,会使用__repr__来代替:

In [76]: classexample:

...:def __repr__(self):

...:return 'repr'...:

In [77]: a=example()

In [78]: print(a)

repr

In [79]: '{}'.format(a.__str__())

Out[79]: 'repr'

所以如果我们只实现两个中的一个的话,只需要写__repr__就可以了

参考:

https://docs.python.org/3/reference/datamodel.html

https://docs.python.org/3/library/functions.html#repr

https://docs.python.org/3/library/stdtypes.html#str

https://github.com/django/django/blob/master/django/db/models/query.py

python中的repr_python中的 __repr__和__str__相关推荐

  1. python中魔法方法repr_Python的两个魔法方法:__repr__和__str__

    目录 例子 关系 使用 官方文档 参考 __repr__ 和 __str__ 是 Python 的两个魔法方法(Magic/Special method),更多魔法方法可以参考 A Guide to ...

  2. python中repr_python中__str__和__repr__的区别

    __str__是在str()函数被使用,或是在print函数打印一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好. 如果只想实现这两个特殊方法中的一个,__repr__是更好的选择,因为如 ...

  3. python中repr_Python中的repr()函数

    Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数. 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式. 在python的官方AP ...

  4. Python(私有变量)类中的特殊方法

    2019独角兽企业重金招聘Python工程师标准>>> 类中的特殊方法 一般说来,特殊的方法都被用来模仿某个行为.例如,如果你想要为你的类使用x[key]这样的索引操作(就像列表和元 ...

  5. Python 3.7.1 中 namedtuple 具名元组基本用法详解

    Python 3.7.1 中 namedtuple 具名元组基本用法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/details/84645251 文 ...

  6. 使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图

    使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图 1. EoN是什么 2. 安装 3. 效果图 4. 源代码 4.1 源码 4.2 源码 参考 写这篇博客源于博友的提问 ...

  7. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

  8. 关于python缩进的描述中_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()...

    关于Python程序中与"缩进"有关的说法中,以下选项中正确的是() 答:缩进在程序中长度统一且强制使用 同文学或同音乐主题的民歌,<_______>是其中之一.此曲经 ...

  9. python缩进在程序中长度统一且强制使用_Python习题纠错1

    February, 1991 0.9.1 2.Python语言的缩进只要统一即可,不一定是4个空格(尽管这是惯例). Python缩进在程序中长度统一且强制使用. 3.IPO:Input Proces ...

最新文章

  1. 各种函数调用约定及浮点数传参
  2. DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?
  3. R语言进行缺失值填充(Filling in missing values):使用R原生方法、data.table、dplyr等方案
  4. java中hashcode()和equals()的详解[转]
  5. 2019 Multi-University Training Contest 1 - 1004 - Vacation - 二分 - 思维
  6. Python3学习笔记(2)——递归函数
  7. PL/SQL编程基本概念
  8. LoRa技术实现水表抄表远距离无线传输方案的应用
  9. #JAVA# 判断从键盘输入的字符串是否为回文
  10. Asp.Net MVC及Web API添加身份验证及错误处理的过滤器
  11. 图解 利用vue-cli 脚手架创建项目
  12. VB 在浏览器中打开指定网址
  13. Norton Internet Security 序列号提取(卡饭)
  14. Excel 某招聘网站职位分析项目
  15. 数仓搭建 DWT 层
  16. 关于MySQL索引面试题的6连炮!招架的住吗?
  17. ALLHIC使用 | HiC辅助基因组组装(三)
  18. Python入门到精通(4):关系与逻辑表达式
  19. 使用el-dialog时,报错“Unknown custom element:<el-dialog> did you register the component correctly?...make
  20. IE7、IE6和火狐兼容性问题

热门文章

  1. 【内联函数】inline关键字的作用与内联函数的特性
  2. (一百三十五)Android O探索WLAN扫描(WIFI SCAN ALWAYS)
  3. C语言__bitwise宏定义
  4. 计算机c语言lms算法,lms算法(毕业论文).doc
  5. java实现809*两位数=800*两位数+9*两位数,求出两位数的值。其中8*两位数的结果为两位数,9*两位数的结果为三位数
  6. 深圳软件测试培训:简述关系型数据库和非关系型数据库
  7. 如何给卫生间的墙砖打孔,避免瓷砖开裂?
  8. 格局决定结局,九种职场高效思维你都有吗
  9. OpenStack搭建私有云一:认证服务
  10. 考研英语 词根词缀单词81-88