【Python】详解类的 __repr__() 方法


引言

类的 __repr__() 方法定义了实例化对象的输出信息,重写该方法,可以输出我们想要的信息,对类的实例化对象有更好的了解。

描述

object.__repr__(self)

Called by the repr() built-in function to compute the “official” string representation of an object. If at all possible, this should look like a valid Python expression that could be used to recreate an object with the same value (given an appropriate environment). If this is not possible, a string of the form <…some useful description…> should be returned. The return value must be a string object. If a class defines __repr__() but not __str__(), then __repr__() is also used when an “informal” string representation of instances of that class is required.

repr() 内置函数调用以输出一个对象的“官方”字符串表示。如果可能,这应类似一个有效的 Python 表达式,能被用来重建具有相同取值的对象(只要有适当的环境)。如果这不可能,则应返回形式如 <...一些有用的描述信息...> 的字符串。返回值必须是一个字符串对象。如果一个类定义了 __repr__() 但未定义 __str__(),则在需要该类的实例的“非正式”字符串表示时也会使用 __repr__()

一句话概括就是: 类可以通过定义 __repr__() 方法来控制此函数为它的实例所返回的内容。

用法

运行:

class Std:
    def __init__(self, name, age):
        self.name = name
        self.age = age
print(Std('john', 18))

输出:

<__main__.Std object at 0x000001ADB0530C10>

从上述代码的运行结果可以看到,打印类的实例化对象,默认输出是 <类名+ object at +内存地址>,该输出太抽象了,对我们了解类的实例化对象没有什么帮助。

如何自定义类的实例化对象的输出呢?这里就需要重写 __repr__() 方法了。

重写方式如下,添加 __repr__() 方法,返回一个自定义的字符串即可,字符串里面可以包含任何你想包含的、关于该实例化对象的信息。


运行:

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

    def __repr__(self):
        return f'Std(name={self.name}, age={self.age})'
print(Std('john', 18))

输出:

Std(name=john, age=18)

参考

https://docs.python.org/3/reference/datamodel.html#object.repr

  • 28
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值