【Python】关于自定义对象的字符串输出问题
背景
由于自定义对象如果没有指定toString方式,则控制台print
打印是就是内存地址型式,如:<__main__.Main object at 0x0000023507367A30>
demo
class Main:
def __init__(self):
self.name = "main"
def __str__(self):
return "Main Str"
def __repr__(self):
return "Main Repr"
if __name__ == '__main__':
main = Main()
print(main)
# 没有实现__str__和__repr__方法会输出内存地址: <__main__.Main object at 0x0000023507367A30>
# 实现了__str__会输出字符串内容: Main Str
# 没有实现__str__但实现了__repr__会输出字符串内容: Main Repr
mains = [Main() for i in range(10)]
print(mains)
# 没有实现__repr__方法会输出内存地址: [ <__main__.Main object at 0x000001827D543DF0>,...]
# 实现__repr__就会输出字符串内容: [Main Repr,...]
总结
- 对象字符串输出需要实现
__str__
或__repr__
方法 - 对象字符串输出优先级:
__str__
>__repr__
- 对象列表字符串输出必需实现
__repr__
方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?