详解Python 类的__repr__方法转换字符串

  • Post category:Python

Python 中的类可以通过定义__repr__方法来自定义其对象的字符串表示形式。该方法将被调用以获取类的对象的字符串表示形式。下面是完整的攻略,包括如何定义和使用__repr__方法以及两个示例说明:

定义__repr__方法

__repr__方法应返回一个字符串,这个字符串表示类的对象的信息。可以使用字符串格式化等方法将对象的各种属性和状态组合到字符串中。

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

    def __repr__(self):
        return f"Name: {self.name}, Age: {self.age}"

在这个例子中,MyClass类有两个属性:name和age。__repr__方法返回的字符串包含了这两个属性的值。

使用__repr__方法

调用相应对象的__repr__方法即可获取它的字符串表示形式。这通常是在对象需要被打印或转换为字符串时使用的。

person = MyClass("John", 25)
print(person.__repr__()) # Output: "Name: John, Age: 25"

string = str(person)
print(string) # Output: "Name: John, Age: 25"

在这个例子中,我们首先创建了一个名为person的MyClass对象,然后通过调用其__repr__方法打印了其字符串表示形式。接下来,我们使用了默认的str函数来转换person对象为字符串,并打印了其字符串表示形式。

示例说明

下面给出两个使用__repr__方法的示例说明:

示例1

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def __repr__(self):
        return f"Rectangle(width={self.width}, height={self.height})"

rect = Rectangle(5, 3)
print(rect) # Output: Rectangle(width=5, height=3)

在这个例子中,Rectangle类代表了一个矩形。__repr__方法返回了形如”Rectangle(width=5, height=3)”的字符串,其中5和3是矩形的宽和高。

示例2

class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

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

student = Student("John", "A+")
print(student) # Output: Student(name='John', grade='A+')

在这个例子中,Student类代表了一个学生。__repr__方法返回了形如”Student(name=’John’, grade=’A+’)”的字符串,其中John和A+是学生的姓名和分数等级。

通过定义__repr__方法,我们可以在Python类中自定义其对象的字符串表示形式,并轻松打印或转换为字符串。