说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 Python 中,__str__()
是一个特殊方法(也称为魔术方法或者魔法方法),用于定义对象的“非正式”字符串表示形式。它类似于 __repr__()
方法,但是针对的是对象的非正式描述。
实现 object.__str__(self)
,当我们使用 print() 函数或者 str() 函数来显示一个对象时,Python 解释器会尝试调用对象的 __str__()
方法,以便获取对象的字符串表示形式。如果对象没有定义 __str__()
方法,Python 会尝试调用 __repr__()
方法,或者返回一个默认的字符串表示形式。
通过 str(object) 以及内置函数 format() 和 print() 调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须为一个 字符串 对象。
此方法与 object.__repr__()
的不同点在于 __str__()
并不预期返回一个有效的 Python 表达式:可以使用更方便或更准确的描述信息。
内置类型 object 所定义的默认实现会调用 object.__repr__()
。
以下是一个简单的示例,说明了如何定义和使用 __str__()
方法:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"({self.x}, {self.y})"
# 创建一个 Point 对象
p = Point(3, 4)
# 使用 print() 函数显示对象
print(p) # 输出:(3, 4)
# 使用 str() 函数显示对象
s = str(p)
print(s) # 输出:(3, 4)
在这个示例中,我们定义了一个 Point 类,并实现了 __str__()
方法,该方法返回了一个表示对象坐标的字符串。当我们使用 print() 函数或者 str() 函数来显示 Point 对象时,Python 解释器会调用 __str__()
方法,并显示返回的字符串表示形式。
总之,__str__()
方法用于定义对象的非正式字符串表示形式,通常用于用户友好的输出,而 __repr__()
方法用于定义对象的正式字符串表示形式,通常用于调试和日志记录。
https://docs.python.org/zh-cn/3/reference/datamodel.html#object.__str__
更新时间:March 3, 2024, 1:12 p.m. 标签:python 特殊方法 字符串