我真的不明白在哪里__str____repr__用于Python。我的意思是,我明白了__str__返回对象的字符串表示。但是为什么我需要那个呢?在什么用例情况下?另外,我读到了__repr__

但是我不明白的是,我会在哪里使用它们?

答案

__repr__

repr()内置功能和通过字符串转换(反向引号)计算对象的"官方"字符串表示。如果可能的话,这看起来应该像有效的python表达式,可用于重新创建具有相同值的对象(给定适当的环境)。

__str__

str()内置函数并通过 print 语句来计算对象的"非正式"字符串表示形式。

使用__str__如果您有课程,并且只要将此对象用作字符串的一部分,则需要提供信息/非正式的输出。例如。您可以定义__str__Django 模型的方法,然后在 Django 管理界面中呈现。<Model object>您会得到一个人的名字和姓氏,事件的名称和日期,等等。


__repr____str__相似,实际上有时是相等的(例如BaseSet上课sets.py从标准库):

def __repr__(self):
    """Return string representation of a set.

    This looks like 'Set([<list of elements>])'.
    """
    return self._repr()

# __str__ is the same as __repr__
__str__ = __repr__

来自: stackoverflow.com