Python中的__str__
与__repr__
:深入理解与最佳实践
在Python的面向对象编程中,__str__
和__repr__
是两个重要的魔法方法(也称为特殊方法或双下划线方法)。它们用于定义对象的字符串表示形式,但各自的目的和用途有所不同。本文将深入探讨__str__
和__repr__
方法之间的区别,并提供实用的编程建议。
一、引言
在Python中,当你尝试将对象转换为字符串时,通常会涉及到__str__
和__repr__
两个方法。这两个方法都是类的特殊方法,用于定义对象的字符串表示形式。但是,它们之间的主要区别在于其用途和期望的输出。
二、__str__
方法
__str__
方法用于定义对象的“非正式”或“友好”的字符串表示形式。其主要目的是提供一个易于阅读的、简洁的字符串,用于向用户显示对象的信息。__str__
方法返回的字符串应该是一个有效的Python表达式,但它不需要能够重新创建对象(尽管如果可能的话,这样做通常是很好的实践)。
当你使用print()
函数或str()
函数将对象转换为字符串时,Python会调用该对象的__str__
方法(如果已定义)。如果没有定义__str__
方法,Python会回退到使用__repr__
方法(如果已定义)。
示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={
self.name
标签:__,Python,repr,str,字符串,方法
From: https://blog.csdn.net/windowshht/article/details/139189340