`

python - __str__ 和 __repr__

 
阅读更多
转自:http://blog.csdn.net/yyt8yyt8/article/details/7030416

内建函数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__'


为什么有了repr()还需要``?
Python中,有的操作符和函数是做同样的事情,原因是某些场合下函数会比操作符更适合使用,比如函数对象可作为参数传递。双星号(**)乘方运算和pow()内建函数都返回x的y次方.
分享到:
评论

相关推荐

    Python中__repr__和__str__区别详解

    在Python编程语言中,`__repr__`和`__str__`是两个非常重要的特殊方法,它们主要用于对象的表示和输出。理解它们的区别对于编写可读性更强的代码至关重要。 `__repr__`方法(代表representation)主要是为了解释一...

    python中__repr__ VS __str__

    __repr__ vs __str__ 看下面例子: >>> class Spam(): ... def __init__(self, name = 'Bob'): ... self.name = name >>> S = Spam() >>> s # 显示并并不友好 直接显示了内存地址 >>> print(s) # 重载__repr__后...

    Python中的__str__()方法与__repr__()方法

    先告诉大家__str__()方法与__repr__()方法的返回值必须都是字符串,否则就会抛出异常。 看这一段代码 class Person(object): def __init__(self, name, age, sex): self.name = name self.age = age self.sex =...

    Python 的 __str__ 和 __repr__ 方法对比

    Python 的全局方法 repr 和 str 会映射到对象的 __repr__ 和 __str__ 的方法调用,还有 str(obj) 时会调用哪个方法,以及 print(obj) 和调试 Python 代码时的对象显示会调用哪个方法呢?这就是本文想要印证的内容。 ...

    详解Python中__str__和__repr__方法的区别

    而且这些脚本必须良好书写和执行,否则就要失去部分或全部的工作成果了。 一种常见的方法是直接在tmpfs文件夹中工作,然后把工作成果备份到磁盘上的一个文件夹中。当您的机器启动时你从那个备份文件夹恢复tmpfs...

    Python中函数 __str__ 和 __repr__ 的区别

    简而言之: __str__ 的目标在于可读性(对用户更友好) __repr__ 的目标在于无歧义(更有助于调试) 举个栗子(Difference between str and repr?...注:str()和repr()函数分别调用的是 __str__ 和 _

    Python:__eq__和__str__函数的使用示例

    在Python编程中,`__eq__`和`__str__`是两个非常重要的魔术方法(magic method),它们分别用于对象的比较和字符串表示。理解它们的使用方式对于编写清晰、可维护的代码至关重要。下面将详细介绍这两个方法的作用、...

    Python-autorepr轻松实现reprstrandunicode方法

    在Python编程中,`__repr__`,`__str__`和`__unicode__`(在Python 3中,`__unicode__`被`__str__`替代)是三个非常重要的特殊方法,它们定义了对象如何被转化为字符串,这对于调试、日志记录以及交互式解释器中的...

    Python3_x和Python2_x的区别.pdf

    在字符串和字节串处理上,Python3.x统一了字符串类型为`str`,它与Python2.x中的`unicode`类似,而字节序列则由新的`bytes`类型表示。这种变化对处理文本和网络数据流的程序有着深远的影响,确保了更一致的处理方式...

    Python 基础教程之str和repr的详解

    在Python编程语言中,`str`和`repr`是两个非常重要的内建函数,它们用于将数据转换为可读的字符串格式。这篇文章将深入探讨这两个函数的区别和应用场景。 首先,`str`函数的主要目的是将一个对象转化为人类可读的...

    python-3.7.1 64位软件

    8. **安全的默认`__str__`和`__repr__`**:当用户定义的类没有定义`__str__`或`__repr__`方法时,Python 3.7将返回更详细的错误信息,帮助调试。 9. **弃用警告**:Python 3.7开始发出弃用某些功能的警告,这些功能...

    python-3.8.7-amd64.zip

    Python 3.8系列引入了许多新特性,增强了其功能性和易用性。在这个"python-3.8.7-amd64.zip"压缩包中,包含了适用于Windows 7及更高版本操作系统的Python安装程序"python-3.8.7-amd64.exe"。 Python 3.8的关键特性...

    python之__len__()

    这是Python面向对象编程中的一种特性,使得自定义类可以像内置类型一样工作,提供了良好的可扩展性和一致性。 总结来说,`__len__()`方法是Python中实现自定义类型与`len()`函数兼容的关键,允许我们为自定义类提供...

    基于Python __dict__与dir()的区别详解

    '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str_...

    python-3.3.2 API文档

    `__init__`方法用于初始化对象,`__str__`和`__repr__`方法分别用于打印对象的可读字符串表示和开发者友好的表示。 五、异常处理 Python通过`try/except`块进行异常处理。可以捕获特定类型的异常,或者使用`except ...

Global site tag (gtag.js) - Google Analytics