CodeWalk

__str__ 和 __repr__ 的区别

作者:Yahuda · 2026-05-30 12:55

Python 中 __str____repr__ 方法有什么区别?各自应该在什么场景下实现?

回答

Yahuda

  • __repr__用于开发者,输出精确、无歧义的表示,最好能用来重建对象,通过 repr() 调用
  • __str__用于用户,输出可读性好,通过 str()print() 调用
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person('{self.name}', {self.age})"  # 可重建

    def __str__(self):
        return f'{self.name} ({self.age})'  # 人类可读

如果只实现一个,应实现 __repr__,因为 __str__ 默认回退到 __repr__