当前位置: 首页 > 知识库问答 >
问题:

python - __repr__和__str__什么区别?

岳嘉石
2023-11-21
class Person:    def __repr__(self):        return "aa"    def __str__(self):        return "bb"print(Person())

共有3个答案

慕学海
2023-11-21
  • object.__repr__(self)

    repr() 内置函数调用以输出一个对象的“官方”字符串表示。如果可能,这应类似一个有效的 Python 表达式,能被用来重建具有相同取值的对象(只要有适当的环境)。如果这不可能,则应返回形式如 <...some useful description...> 的字符串。返回值必须是一个字符串对象。如果一个类定义了 __repr__() 但未定义 __str__(),则在需要该类的实例的“非正式”字符串表示时也会使用 __repr__()

    此方法通常被用于调试,因此确保其表示的内容包含丰富信息且无歧义是很重要的。

  • object.__str__(self)

    通过 str(object) 以及内置函数 format()print() 调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须为一个 字符串 对象。

    此方法与 object.__repr__() 的不同点在于 __str__() 并不预期返回一个有效的 Python 表达式:可以使用更方便或更准确的描述信息。

    内置类型 object 所定义的默认实现会调用 object.__repr__()

https://docs.python.org/zh-cn/3/reference/datamodel.html#obje...
章涵容
2023-11-21

以日常使用来看,repr的内容可以在调试的时候显示,str的内容可以在使用print时显示

陈翰林
2023-11-21
  • __repr__ goal is to be unambiguous
  • __str__ goal is to be readable

https://stackoverflow.com/questions/1436703/what-is-the-difference-between-str-and-repr

 类似资料:
  • 问题内容: 和有什么不一样? 问题答案: 默认的实现是无用的(很难想象有一个不是,但是是的) 目标是明确 目标是可读性 容器的 使用包含的对象repr 默认实现是没有用的 这主要是令人惊讶的,因为Python的默认设置往往相当有用。但是,在这种情况下,具有默认值的行为如下: 太危险了(例如,如果对象之间互相引用,则很容易陷入无限递归)。因此,Python应对了。请注意,有一个默认值为true:如果

  • 本文向大家介绍Python 的 __str__ 和 __repr__ 方法对比,包括了Python 的 __str__ 和 __repr__ 方法对比的使用技巧和注意事项,需要的朋友参考一下 阅读到 Strings 中关于转换对象为字符串的内容,介绍了 repr 函数,趁着还没有真正了解 Python 面向对象的生疏与热度,感性上理解一下 repr 与 str 这两个函数的区别。 Python 的

  • rank ▲ ✰ vote url 20 707 342 931 url __str__和repr__的区别 __str__和repr__有什么区别? 首先让我们梳理一下张三的答案: 用起来没有什么区别 __repr__的目的是明确的 __str__的目的是可读性 __str__的用法包含__repr__ 用法没有什么区别 因为Python的宗旨是易用的,所以这看起来有点不寻常.但是当

  • 前面章节中,我们经常会直接输出类的实例化对象,例如: 程序运行结果为: <__main__.CLanguage object at 0x000001A7275221D0> 通常情况下,直接输出某个实例化对象,本意往往是想了解该对象的基本信息,例如该对象有哪些属性,它们的值各是多少等等。但默认情况下,我们得到的信息只会是“类名+object at+内存地址”,对我们了解该实例化对象帮助不大。 那么,

  • 问题内容: 我正在使用读取csv文件的两列,然后将值分配给字典。这些列包含数字和字母字符串。有时在某些情况下单元格为空。在我看来,应读取但应分配该字典条目的值。当然,由于它具有空值,因此更能描述一个空单元格,而nan只是说读取的值不是数字。 我的理解正确吗,和之间有什么区别?为什么分配而不是? 另外,我的字典检查是否有任何空单元格一直在使用: 但这给了我一个错误,说我不能使用此检查v。我猜这是因为

  • 问题内容: 和之间有适用的区别吗? 从Python文档中: :返回字典的(键,值)对列表的副本。 :在字典的(键,值)对上返回迭代器。 如果我运行下面的代码,每个似乎都返回对同一对象的引用。我缺少任何细微的差异吗? 输出: 问题答案: 这是演变的一部分。 最初,构建了一个真正的元组列表,并将其返回。这可能会占用大量额外的内存。 然后,一般将生成器引入该语言,然后将该方法重新实现为名为的迭代器-生成