You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python打印自定义Book类实例列表输出内存地址而非书籍信息?

问题原因

执行print(lib.books)时输出类实例内存地址,是因为Python打印自定义类的实例时,默认输出类名+内存地址的标识格式,未给Book类定义自定义字符串表示方法的前提下,不会输出书籍属性信息。

解决方法

给Book类添加__repr__方法即可(列表打印元素时默认调用该方法),如果需要单独打印单个Book实例时输出更友好的文本,可额外添加__str__方法。
修改后的完整代码如下:

class Book:
    def __init__(self, name, author, code):
        self.name = name
        self.author = author
        self.code = code
        self.available = True
    
    # 列表打印Book实例时调用该方法输出属性信息
    def __repr__(self):
        return f"Book(name='{self.name}', author='{self.author}', code={self.code}, available={self.available})"
    
    # 可选:单独打印Book实例时调用,输出可读性更高的文本
    def __str__(self):
        return f"《{self.name}》 作者:{self.author} 编号:{self.code} {'可借阅' if self.available else '已借出'}"

class Library:
    def __init__(self):
        self.books = []

    def addBook(self, book):
        self.books.append(book)


algebra = Book('Algebra for beginners', 'Albert Einstein', 123)
lib = Library()

lib.addBook(algebra)
print(lib.books)
# 输出:[Book(name='Algebra for beginners', author='Albert Einstein', code=123, available=True)]
print(algebra)
# 输出:《Algebra for beginners》 作者:Albert Einstein 编号:123 可借阅
  • 仅需要打印书籍列表展示属性的场景下,保留__repr__即可
  • 可根据业务需求自定义两种方法的输出格式

内容的提问来源于stack exchange,提问作者eric22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:54:03