1.repr() 或 str() 函数

Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(str出来的值是给人看的字符串,repr出来的值是给机器看的)

>>> import datetime
>>> t1=datetime.datetime.now()>>> print(t1)
2017-08-06 21:49:37.490534
>>> print(str(t1))
2017-08-06 21:49:37.490534
>>> print(repr(t1))
datetime.datetime(2017, 8, 6, 21, 49, 37, 490534)>>>

再看一个例子

>>> print(str(1000L))
1000
>>> print(repr(1000L))
1000L

2.特殊方法__str__和_repr_

引用别人的一个例子 http://blog.csdn.net/luckytanggu/article/details/53649156

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
TestRepr(hello, world!)
>>> print tr
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中__str__和__repr__相关推荐

  1. python中__str__与__repr__

    (1)背景 python中,对于类(自定义类)的实例对象的默认显示既没有太大用处,也不美观.比如: 1 class adder: 2 def __init__(self,value=0): 3 sel ...

  2. python中 __str__和__repr__

    如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object):def __init__(self, name, gender):self.name ...

  3. python中str函数_一文让你彻底搞懂Python中__str__和__repr__?

    __str__和__repr__的异同? 字符串的表示形式 我们都知道,Python的内置函数repr()能够把对象用字符串的形式表达出来,方便我们辨认.这就是"字符串表示形式". ...

  4. python中的str方法和repr方法_详解Python中__str__和__repr__方法的区别

    对我当前工程进行全部测试需要花费不少时间.既然有 26 GB 空闲内存,为何不让其发挥余热呢? tmpfs 可以通过把文件系统保存在大内存中来加速测试的执行效率. 但优点也是缺点,tmpfs 只把结果 ...

  5. python中与0xf2相等的是_python中__str__与__repr__

    (1)背景 python中,对于类(自定义类)的实例对象的默认显示既没有太大用处,也不美观.比如: 1 classadder:2 def __init__(self,value=0):3 self.d ...

  6. python中 str 和 repr_Python中__str__和 __repr__

    __str__, __repr__ 是python类中的两个魔术方法,前者是在类实例当作字符串时调用,后者通常给程序员调试信息时给输出,都可以直接显示类信息.__repr__ = __str__,简单 ...

  7. Python中__str__的用法

    __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): 不使用 __str__ ,print打印出来是个对象:使用了就把对象变成字符串class P ...

  8. python 的__str__和__repr__有什么区别?

    __str__和__repr__Python和有什么不一样? __repr__:python对象的表示形式,通常eval会将其转换回该对象 __str__:是您所认为的文本形式的对象 例如 >& ...

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

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

最新文章

  1. ARM研发进展与企业清单
  2. 机器人3·15 | 赛迪「机器人国评中心」揭示机器人产品质量6大痛点!
  3. 对 Azure 虚拟网络网关的改进
  4. 《信息可视化:交互设计(原书第2版)》——第2章基本概念
  5. PHP判断变量内容是什么编码(gbk?utf-8) mb_detect_encoding
  6. AutoCAD VBA基于对象的分层
  7. 链表题目---6 复制带随机指针的链表
  8. java基础总结06-常用api类-Math常用方法
  9. HTML-特效代码大全
  10. FlashBuild4序列号生成与使用方法
  11. 数据库优化的方案有哪些,请具体说明
  12. java smtp.126.com_java实现邮件发送
  13. 笔记本win10 64位 1050Ti显卡 安装Anaconda3.4.2.0 (python3.5版)+tensorflow gpu版
  14. Tryhackme-New Year
  15. 开发一款APP需要阿里云服务器多大配置
  16. 基于Go语言Iris+Layui的OA办公系统
  17. 如何设置u盘写保护防止u盘拷贝文件
  18. 菜单导航间竖杠竖线间隔符 | 效果的CSS实现
  19. 计算机中分类汇总的列子,EXCEL函数大全(含详细例子)-excel函数大全详细.pdf
  20. 引入助教来提高知识蒸馏效率

热门文章

  1. php 类 静态调用 实例化 效率,php类的静态调用和实例化调用有哪些不同点?
  2. qpython3l手机版怎么用_qpython怎么用
  3. linux开发板蓝牙连接,开发板蓝牙通信问题,有这方面经验的请进
  4. 面试题整理 8 字符串排序扩展题
  5. 5.分布式数据库HBase第1部分
  6. Caffe学习系列(22):caffe图形化操作工具digits运行实例
  7. OpenCV的HOG+SVM训练程序注意事项
  8. Tomcat8源码编译及导入Eclipse中研究
  9. getParameter的用法总结
  10. Android Studio 单刷《第一行代码》系列 04 —— Activity 相关