📅  最后修改于: 2023-12-03 15:13:14.353000             🧑  作者: Mango
在Python中,__str__
和__repr__
都是特殊的方法,用于更好地控制对象的字符串表示形式。虽然它们都可以用于获取对象的字符串表示形式,但它们之间有一些重要的区别。
__repr__
__repr__
方法返回对象的string表示形式,用于开发人员调试阶段。它应该返回能够完全重现对象的Python表达式。
举个例子,假设有一个叫Person
的类:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return 'Person(name={}, age={})'.format(self.name, self.age)
在这个类中,__repr__
方法返回一个字符串,用于表示Person
类实例。当我们在Python控制台中打印一个Person
对象时,它将打印为类似于Person(name=John, age=30)
这样的形式。
__str__
__str__
方法是用于用户友好的字符串表示形式。它返回对象的string表示形式,用于最终用户。
例如,假设我们有一个类,它表示日期时间:
from datetime import datetime
class MyDateTime:
def __init__(self, year, month, day, hour, minute):
self.dt = datetime(year, month, day, hour, minute)
def __str__(self):
return self.dt.strftime('%Y-%m-%d %H:%M')
在这个类中,__str__
方法返回一个形如'2022-09-23 14:30'的字符串,用户可以理解和使用。
__repr__
用于开发人员调试阶段,返回一个能够完全重现对象的Python表达式__str__
用于最终用户,返回一个可读性更高的字符串表示形式__str__
方法,Python会寻找__repr__
方法作为备选方法__repr__
方法,Python会返回默认的<object classname at memoryaddress>
字符串表示形式。在Python中,__str__
和__repr__
方法都是用于对象的字符串表示形式的特殊方法。虽然它们都可以返回字符串表示形式,但它们之间有重要的区别,应该根据使用场景进行选择。__repr__
用于开发人员调试阶段,返回一个能够完全重现对象的Python表达式。__str__
用于最终用户,返回可读性更高的字符串表示形式。