说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 Python 中,__repr__
是一个特殊方法(也称为魔术方法或者魔法方法),用于定义对象的“官方”字符串表示形式。它的作用是返回一个字符串,该字符串可以用来表示对象的状态或者内容,通常用于调试和日志记录。
实现 object.__repr__(self)
,当我们在交互式环境中输入一个对象名并按回车时,解释器会调用该对象的 __repr__
方法,以便显示对象的信息。如果没有定义 __repr__
方法,Python 将尝试调用 __str__
方法。如果 __str__
也未定义,Python 将返回默认的对象表示形式,类似 <__main__.ClassName object at 0x12345678>
。
由 repr() 内置函数调用以输出一个对象的“官方”字符串表示。如果可能,这应类似一个有效的 Python 表达式,能被用来重建具有相同取值的对象(只要有适当的环境)。如果这不可能,则应返回形式如 <...some useful description...>
的字符串。返回值必须是一个字符串对象。如果一个类定义了 __repr__()
但未定义 __str__()
,则在需要该类的实例的“非正式”字符串表示时也会使用 __repr__()
。
此方法通常被用于调试,因此确保其表示的内容包含丰富信息且无歧义是很重要的。
以下是一个简单的示例,说明了如何定义和使用 __repr__
方法:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
# 创建一个 Point 对象
p = Point(3, 4)
# 打印对象
print(p) # 输出:Point(x=3, y=4)
在这个示例中,我们定义了一个 Point 类,它有两个属性 x 和 y。我们在类中实现了 __repr__
方法,返回了一个字符串,用于表示该对象的状态。当我们打印 Point 对象时,Python 将调用该方法并显示返回的字符串表示形式。
总之,__repr__
方法允许我们自定义对象的字符串表示形式,以便更好地理解和调试代码。
https://docs.python.org/zh-cn/3/reference/datamodel.html#object.__repr__
更新时间:March 3, 2024, 1:14 p.m. 标签:python 特殊方法 字符串