【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,...]

总结

  1. 对象字符串输出需要实现__str____repr__方法
  2. 对象字符串输出优先级:__str__ > __repr__
  3. 对象列表字符串输出必需实现__repr__方法
posted @   CryDongle  阅读(14)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示