Python打印BookCollection链表节点时输出内存地址而非书籍信息如何解决
问题根因
直接调用print(node)时,默认输出的是BookCollectionNode类实例的对象内存地址,既没有访问节点内存储的Book类实例,也没有调用书籍详情的格式化方法,因此输出内容不符合预期。
修复方案
方案1:修改遍历打印逻辑(推荐,无侵入性)
遍历节点时,先取出节点的data属性(即插入的Book对象),再调用getBookDetails()方法打印即可,示例代码如下:
// 修复后的getAllBooksInCollection方法逻辑 public void getAllBooksInCollection() { BookCollectionNode current = head; while (current != null) { Book currentBook = (Book) current.getData(); System.out.println(currentBook.getBookDetails()); current = current.getNext(); } }
方案2:重写节点类的字符串输出方法(适配直接打印节点的场景)
如果需要保留直接print(node)的写法,可在BookCollectionNode类中重写默认的字符串转换方法:
- Python示例:
class BookCollectionNode: # 原有属性、get/set方法逻辑保持不变 def __str__(self): # 直接返回内部存储书籍的格式化详情 return self.data.getBookDetails()
- Java示例:
@Override public String toString() { return this.data.getBookDetails(); }
内容的提问来源于stack exchange,提问作者nwillows
相关产品推荐
相关产品推荐

