python 类重写转换字符串
在 Python 中,我们可以通过重写类的特殊方法来控制对象的字符串表示形式。其中,__str__()
方法用于将对象转换为字符串,__repr__()
方法用于返回供开发者阅读的字符串表示。
本文将介绍如何在 Python 中重写类的 __str__()
方法,从而自定义对象的字符串表示形式。
为什么重写str()方法
在 Python 中,每个类都继承了 object
类,所以可以使用 __str__()
方法来控制对象的字符串表示形式。当我们使用内置的 str()
函数或者 print()
函数打印对象时,会调用该对象的 __str__()
方法来获取字符串表示。
默认情况下,当我们打印一个对象时,会输出该对象的内存地址。但有时候我们希望自定义对象的字符串表示,以便更好地理解对象的属性和状态。因此,重写 __str__()
方法可以让我们控制对象的打印格式。
实现str()方法
下面是一个简单的示例,演示了如何重写一个类的 __str__()
方法:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person: {self.name} (Age: {self.age})"
p = Person("Alice", 30)
print(p)
输出为:
Person: Alice (Age: 30)
在上面的示例中,我们定义了一个 Person
类,其中包含一个 __str__()
方法,该方法返回一个自定义的字符串表示。当我们实例化一个 Person
对象,并打印它时,会调用 __str__()
方法来获取对象的字符串表示。
自定义对象的字符串形式
通过重写 __str__()
方法,我们可以自定义对象的字符串形式,以便更直观地展示对象的属性和状态。例如,如果我们要表示一个学生对象,可以按照以下方式重写 __str__()
方法:
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
def __str__(self):
return f"Student: {self.name} (Grade: {self.grade})"
s = Student("Bob", 12)
print(s)
输出为:
Student: Bob (Grade: 12)
在上面的示例中,我们定义了一个 Student
类,其中包含一个 __str__()
方法,该方法返回一个自定义的字符串表示。当我们实例化一个 Student
对象,并打印它时,会调用 __str__()
方法来获取对象的字符串表示,以便更好地理解对象的属性和状态。
使用str()方法表示复杂对象
通过重写 __str__()
方法,我们还可以更好地表示复杂对象。例如,下面是一个 Rectangle
类的示例,展示了如何自定义矩形对象的字符串表示:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def __str__(self):
return f"Rectangle: Width={self.width}, Height={self.height}"
r = Rectangle(10, 5)
print(r)
输出为:
Rectangle: Width=10, Height=5
在这个示例中,我们定义了一个 Rectangle
类,其中包含一个 __str__()
方法,该方法返回一个自定义的字符串表示。当我们实例化一个 Rectangle
对象,并打印它时,会调用 __str__()
方法来获取对象的字符串表示,以便更好地理解对象的属性和状态。
小结
通过重写类的 __str__()
方法,我们可以控制对象的字符串表示形式,使其更符合我们的需求。这样可以让我们更直观地了解对象的属性和状态,方便调试和开发过程。