__str__ 和 __repr__

来源:互联网 发布:telnet如何测试端口 编辑:程序博客网 时间:2024/04/30 04:49

From: http://blog.csdn.net/yyt8yyt8/article/details/7030416

Reference: http://zhidao.baidu.com/link?url=Sc4LZLKx1Cax503f9pv0mY2jel9FMpTR0VWt4aNhDQL2XfBkuSw1IdNB_ptK2CAcMMu9sUdZXQpa17zJo54DdFlfzTG9SYaHiRowRwEdTTa

内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可读性好(故被print调用),而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下 obj==eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象作为其参数,返回适当的字符串。

事实上repr()和``做一样的事情,返回一个对象的“官方”字符串表示。其结果绝大多数情况下(不是所有)可以通过求值运算(内建函数eval())重新得到该对象。

str()则不同,它生成一个对象的可读性好的字符串表示,结果通常无法用eval()求值,但适合print输出。

如下例:

>>> class D(object):...     def __str__(self):...         return "a __str__"...     def __repr__(self):...         return "a __repr__"...>>> dr = D()>>> print dra __str__>>> dra __repr__>>> "%s" % dr'a __str__'>>> "%r" % dr'a __repr__'

 

 

为什么有了repr()还需要``? 

 Python中,有的操作符和函数是做同样的事情,原因是某些场合下函数会比操作符更适合使用,比如函数对象可作为参数传递。双星号(**)乘方运算和pow()内建函数都返回x的y次方.

0 0
原创粉丝点击