我真的不明白在哪里__str__
和__repr__
用于Python。我的意思是,我明白了__str__
返回对象的字符串表示。但是为什么我需要那个呢?在什么用例情况下?另外,我读到了__repr__
但是我不明白的是,我会在哪里使用它们?
答案
由
repr()
内置功能和通过字符串转换(反向引号)计算对象的"官方"字符串表示。如果可能的话,这看起来应该像有效的python表达式,可用于重新创建具有相同值的对象(给定适当的环境)。
由
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__