Python __str__和__repr__的区别

Python strrepr的区别

在本文中,我们将介绍Python中strrepr两个特殊方法的区别。这两个方法都可以用于自定义类的输出形式,但在具体的使用场景和输出结果上有些差别。

阅读更多:Python 教程

str方法

str方法用于返回对象的可读字符串表示形式,即对象在交互式环境下打印出的结果。它的主要目的是让对象在非正式的字符串表示形式中更易读。

下面是一个例子,演示了如何使用str方法:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

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

person = Person("Alice", 25)
print(person)
Python

输出结果为:

Person: name=Alice, age=25
Python

在上面的例子中,我们定义了一个Person类,并在__str__方法中返回了以”name”和”age”为标签的字符串。当我们打印person对象时,实际上是调用了__str__方法。

repr方法

repr方法用于返回对象的“官方”字符串表示形式,即对象在解释器环境下打印出的结果。它的主要目的是让开发者能够重新创建该对象。

下面是一个例子,演示了如何使用repr方法:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point(x={self.x}, y={self.y})"

point = Point(3, 4)
print(repr(point))
Python

输出结果为:

Point(x=3, y=4)
Python

在上面的例子中,我们定义了一个Point类,并在__repr__方法中返回了以”x”和”y”为标签的字符串。当我们调用repr()函数并传入point对象时,实际上是调用了__repr__方法。

区别与应用场景

strrepr方法的主要区别在于输出结果的不同。str方法返回的结果应该更加用户友好,而repr方法的结果更多地用于开发者调试和重新创建对象。

当我们只定义了str方法时,如果尝试打印对象或使用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}, age={self.age}"

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

person = Person("Bob", 30)
print(person)  # 使用__str__方法
print(str(person))  # 使用__str__方法
print(repr(person))  # 使用__repr__方法
Python

输出结果为:

Person: name=Bob, age=30
Person: name=Bob, age=30
Person(name='Bob', age=30)
Python

在上面的例子中,我们同时定义了strrepr方法。当我们打印对象或使用str()函数时,结果采用的是str方法的返回结果。而当使用repr()函数时,结果采用的是repr方法的返回结果。

另外,str方法的返回结果应该是一个人类可读的字符串,而repr方法的返回结果应该是一个可供解释器读取的字符串,通常应该是一段可以用来重新创建该对象的代码。

总结

通过本文,我们了解了Python中strrepr两个方法的区别和应用场景。str方法用于返回对象的可读字符串表示形式,而repr方法用于返回对象的“官方”字符串表示形式,以便开发者调试和重新创建对象。我们可以根据需求选择使用这两个方法,使得自定义类的输出形式更加灵活和适用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册