__repr__和__str__使用
2016-07-19 本文已影响41人
知识分子中的文盲
内建函数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 dr
a str
dr
a repr
"%s" % dr
'a str'
"%r" % dr
'a repr'
'''