当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python __repr__()用法及代码示例


Python __repr__()其中一个魔法方法 返回一个可打印的表示对象Python可以自定义或预定义,即我们还可以根据需要创建对象的字符串表示形式。

Python __repr__() 魔术方法语法

用法: object.__repr__()
  • object: The object whose printable representation is to be returned.

返回: Simple string representation of the passed object.

Python __repr__() 方法示例

在此示例中,我们定义了一个 GFG 类,其中三个实例变量 f_name、m_name 和 l_name 分别代表一个人的名字、中间名和姓氏。这__repr__()方法被定义为返回一个string以可用于重新创建对象的格式表示实例。

Python3


class GFG:
   
    def __init__(self, f_name, m_name, l_name):
        self.f_name = f_name
        self.m_name = m_name
        self.l_name = l_name
    def __repr__(self):
        return f'GFG("{self.f_name}","{self.m_name}","{self.l_name}")'
gfg = GFG("Geeks", "For", "Geeks")
print(repr(gfg))

输出:

GFG("Geeks","For","Geeks")

__str__()和__repr__()魔法方法的区别

在此示例中,我们定义了一个 GFG 类,其中一个实例变量名称代表一个人的名字。 __str__() 方法定义为返回实例的人类可读字符串表示形式,而 __repr__() 方法定义为返回可用于重新创建对象的实例的字符串表示形式。

当我们创建 GFG 类的实例并直接在该对象上调用 __str__() 或 __repr__() 时,将调用相应的方法并返回表示该对象的字符串。

Python3


class GFG:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return f'Name is {self.name}'
    def __repr__(self):
        return f'GFG(name={self.name})'
obj = GFG('GeeksForGeeks')
print(obj.__str__())
print(obj.__repr__())

输出:

Name is GeeksForGeeks
GFG(name=GeeksForGeeks)

您还可以阅读str() vs repr() in Python

使用内置类的 __str__() 和 __repr__() 示例

在这个例子中,我们定义了一个子类元组称为 MyTuple 覆盖__str__()__repr__()方法。当我们调用时str()或者repr()在 MyTuple 的实例上,自定义__str__()__repr__()分别调用方法。

Python3


class MyTuple(tuple):
    def __str__(self):
        return f"MyTuple({super().__str__()})"
    def __repr__(self):
        return f"MyTuple({super().__repr__()})"
mt = MyTuple((1,2,3))
print(mt.__repr__())
print(mt.__str__())

输出:

MyTuple((1, 2, 3))
MyTuple(MyTuple((1, 2, 3)))

__str__() 和 __repr__() 使用新类的示例

在这个例子中,我们定义了一个Book类,它有三个实例变量title、author和pages,分别代表一本书的标题、作者和页数。 __str__() 方法定义为以人类可读的格式返回实例的字符串表示形式,而 __repr__() 方法定义为返回可用于重新创建对象的实例的字符串表示形式。

当我们创建 Book 类的实例并对其调用 str() 时,__str__()方法被调用并返回一个表示该对象的人类可读的字符串。当我们调用时repr()其上,__repr__()方法被调用并且返回以可以重新创建的方式表示对象的字符串。

Python3


class Book:
    def __init__(self, title, author, pages):
        self.title = title
        self.author = author
        self.pages = pages
    def __str__(self):
        return f"{self.title} by {self.author}, {self.pages} pages"
    def __repr__(self):
        return f"Book('{self.title}', '{self.author}', {self.pages})"
book1 = Book("The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 224)
print("Using str(): ", str(book1))
print("Using repr(): ", repr(book1))

输出:

Using str():  The Hitchhiker's Guide to the Galaxy by Douglas Adams, 224 pages
Using repr():  Book('The Hitchhiker's Guide to the Galaxy', 'Douglas Adams', 224)

__repr__()魔术方法的实际使用

此代码创建一个 Color 类,其中包含__init__()方法采用后缀参数并设置实例变量自我。该值的后缀。它还设置另一个实例变量 self。标题为string包括后缀。最后,它定义了一个__repr__()返回对象的字符串表示形式的方法。

Python3


class Color:
    def __init__(self, suffix):
        self.suffix = suffix
        self.title = f"Golden {suffix}"
    def __repr__(self):
        return f"Color('{self.suffix}')"
c1 = Color("Yellow")
# create another object with same params as c1
# using eval() on repr()
c2 = eval(repr(c1))
print("c1.title:", c1.title)
print("c2.title:", c2.title)

输出:

c1.title: Golden Yellow
c2.title: Golden Yellow


相关用法


注:本文由纯净天空筛选整理自shlokdi35dq大神的英文原创作品 Python __repr__() magic method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。