python中__repr__的主要目的

Rob*_*lex 3 python python-3.x

我刚刚遇到这个问题,在Python和它之间的差异,__str____repr__提到它的主要目的__repr__是明确的.但是我听说它的主要目的__repr__是生成一个字符串,以便以后eval()可以重建python对象.其实主要目的是__repr__什么?python中的任何内置函数或任何默认模块本身都__repr__用于重构对象吗?如果我们只是覆盖__repr__它会一直返回一个常量字符串(例如"foo"),它会搞砸执行吗?

Mar*_*ers 8

对于具有文字符号(类型str,int,float,list,等等)repr()返回可用于再次创建类型的字符串.

很好,但不是要求.

主要目的__repr__是为开发人员提供有关此处具有哪些对象的明确信息,以用于调试目的.

引用__repr__文档:

repr()内置函数调用以计算对象的"官方"字符串表示.如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(给定适当的环境).如果无法做到这一点,<...some useful description...>则应返回表单的字符串.

但最重要的是:

这通常用于调试,因此表示信息丰富且明确是很重要的.

强调我的.

从您的自定义类型返回一个常量字符串不会在技术上破坏任何东西,但会使您作为开发人员的生活变得更难.

  • +1,`__str __()`用于用户,`__repr __()`用于开发人员. (4认同)