Python中自定义类为什么重写__repr__方法会影响到str的输出?

605 篇文章 88 订阅 ¥59.90 ¥99.00
本文探讨Python中自定义类重写__repr__方法如何影响__str__的输出。__repr__返回对象的官方字符串表示,用于调试;__str__返回非正式表示,用于用户界面。当仅重写__str__,print和str调用__str__,repr和直接输入调用__repr__。若仅重写__repr__,所有输出方式都会调用__repr__,可能导致意外结果。要确保__repr__和__str__返回不同字符串以避免混淆。
摘要由CSDN通过智能技术生成

Python中自定义类为什么重写__repr__方法会影响到str的输出?

在Python中,__repr__和__str__方法用于为对象提供字符串表示形式。其中__repr__方法返回的是对象的“官方”字符串表示形式,主要用于调试和开发阶段;而__str__方法返回的是对象的“非正式”字符串表示形式,主要用于用户界面和输出。

当我们在自定义类中只定义了__str__方法时,如果在交互式解释器下使用print打印这个对象,会调用该对象的__str__方法输出字符串表示形式。但是如果使用repr函数或直接在控制台输入该对象,则会调用该对象的__repr__方法。

下面是一个例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"{self.name} ({self.age} years old)"
    
p = Person("Tom", 30)

print(p)         # 输出:Tom (30 years old)
print(str(p))    # 输出:Tom (30 years old)
print(repr(p))   # 输出:<__main__.Person object at 0x000001>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值