Python 语言提供了许多 魔术方法(Magic Methods),也称为 双下划线方法(Dunder Methods),它们以 __
开头和结尾,允许定义对象的特殊行为。其中,__str__
、__repr__
和 __iter__
是非常常用的魔术方法,可以帮助更好地控制对象的字符串表示和迭代行为。本文将详细介绍这三个魔术方法的作用、使用方式,以及它们在实际开发中的应用场景。
1. __str__
方法 — 友好的字符串表示
1.1 作用
__str__
方法用于定义对象的可读字符串表示,当使用 str(obj)
或 print(obj)
时,会调用该方法。它应该返回一个易读、用户友好的字符串,类似于 toString()
方法(如 Java)。
1.2 示例
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"姓名: {
self.name}, 年龄: {
self.age}"
# 创建对象
person = Person("张三", 25)
# 调用 __str__
print(person) # 输出: 姓名: 张三, 年龄: 25
当 print(person)
被调用时,Python 自动调用 __str__
方法,返回一个友好的字符串。
1.3 应用场景
- 美化对象输出,让
print()
结果更直观。 - 提供用户友好的信息,用于日志输出等场景。
2. __repr__
方法 — 精确的字符串表示
2.1 作用
__repr__
方法用于定义对象的正式字符串表示,当调用 repr(obj)
或在交互式环境(如 Python REPL 或 Jupyter Notebook)中直接输入对象时,会调用该方法。它应该返回更精确、开发