【Python】__str__ 和__repr__

Python 的数据模型通过一系列特殊的方法(有时候被称为魔术方法)使你能够在自己的类中定义对象的行为。这些特殊方法有固定的命名规则,都是以双下划线(__)开头和结尾的。下面我会介绍一个和这些特殊方法相关的 Python 小技巧:美化你的类的打印输出。

自定义对象字符串表示

当你打印一个对象时,默认情况下它会显示一个不那么友好的内存地址。但你可以通过增加 __str____repr__ 特殊方法使输出更加友好。

__str__ 方法

__str__ 应返回一个对象的可读性高的字符串表示,它经常用于将对象的信息以友好的方式展示给用户。

__repr__ 方法

__repr__ 应返回一个对象的官方字符串表示,它最好是可以用来重构这个对象的输出。这通常是给开发者看的。

class Product:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def __str__(self):
        return f'Product(name={self.name}, price={self.price})'

    def __repr__(self):
        return f'Product({self.name!r}, {self.price!r})'

在这个例子中,当你打印一个 Product 对象时:

p = Product('Widget', 50)

# 对用户友好的输出
print(str(p))  # Output: Product(name=Widget, price=50)

# 对开发者友好的输出,可以重新创建对象
print(repr(p))  # Output: Product('Widget', 50)

这样的技巧对于调试和记录非常有帮助,因为它能够根据对象类型和状态提供清晰而准确的信息。

使用 __str____repr__ 来定义对象的字符串表示可以显著提升代码的可维护性,并且让日志和调试输出更容易理解。通常,在编写一个新的类时,定义好 __repr__ 方法是一个好习惯。如果这个类用于跟最终用户交互,那么也应该定义一个 __str__ 方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值