__str__和__repr__用法,区别

时间:2024-09-29 21:56:30

__str__方法用途
str 方法是 Python 中一个特殊的方法,用于定义对象的“字符串表示”。当你使用 print() 函数或 str() 函数来输出一个对象时,Python 会调用对象的 str 方法。这个方法应该返回一个易于阅读的字符串,通常用于向用户展示对象的基本信息。

用途:

  1. 用户友好的输出str 方法通常用于提供一个对用户友好的字符串表示,便于理解对象的内容和状态。
  2. 调试:通过定义 str 方法,可以更方便地查看对象的状态,有助于调试程序。
  3. 自定义格式:可以根据需要自定义对象的输出格式,以适应特定的需求。
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"姓名: {self.name}, 年龄: {self.age}"

# 创建一个 Person 对象
person = Person("张三", 30)

# 打印对象
print(person)  # 输出: 姓名: 张三, 年龄: 30

__repr__方法用途

  • 主要用于生成官方字符串表示,通常是为了开发者调试和开发使用。
  • 当你在交互式解释器中输入对象名,或者使用 repr() 函数时,会调用 repr 方法。
  • 目标是提供一个尽可能准确和完整的输出,通常可以用来重新创建该对象。
class Person:
       def __init__(self, name, age):
           self.name = name
           self.age = age

       def __repr__(self):
           return f"Person(name='{self.name}', age={self.age})"

   person = Person("张三", 30)
   print(repr(person))  # 输出: Person(name='张三', age=30)

总结:

  • 使用 str 来提供用户友好的输出。
  • 使用 repr 来提供详细的、开发者友好的输出,通常用于调试。