小编典典

Python object .__ repr __(self)应该是表达式吗?

python

我正在查看Python文档中的内置对象方法,并且对的文档感兴趣object.__repr__(self)。它说的是:

由repr()内置函数和字符串转换(反引号)调用以计算对象的“正式”字符串表示形式。如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(在适当的环境下)。如果无法做到这一点,则应返回格式为<…一些有用的说明…>的字符串。返回值必须是一个字符串对象。如果一个类定义了
repr ()而不是 str (),则当需要该类实例的“非正式”字符串表示形式时,也使用 repr ()。

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

对我来说最有趣的部分是…

如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象

…但是我不确定这到底意味着什么。它说,它应该 看起来
像它可以用于重建对象的表达式,但这是否意味着它应该仅仅是那种你可以使用表达式的例子,或者它应该是一个实际的表达,可以执行(EVAL等。)重新创建对象?还是……纯粹是出于纯粹的信息目的而对使用的实际表达方式进行了修改?

总的来说,我对应该在此处输入的内容有些困惑。


阅读 225

收藏
2021-01-20

共1个答案

小编典典

>>> from datetime import date
>>>
>>> repr(date.today())        # calls date.today().__repr__()
'datetime.date(2009, 1, 16)'
>>> eval(_)                   # _ is the output of the last command
datetime.date(2009, 1, 16)

输出是可以由python解释器解析的字符串,并导致一个相等的对象。

如果无法实现,则应以的形式返回字符串<...some useful description...>

2021-01-20