Python中打印hashtable输出内存地址而非实际值如何解决
问题解决方案
解决Package对象打印仅显示内存地址的问题
Python打印自定义类的实例对象时,默认会输出类归属和内存地址,只需要在Package类中添加__str__方法自定义打印内容即可,如果希望直接打印哈希表的table属性也能输出可读内容,额外新增__repr__的指向配置即可。修改后的Package类代码如下:
class Package: def __init__(self, ID, Address, City, State, Zip, Deadline, Weight, Notes, Status, Deliverytime): self.packageID = ID self.packageAddress = Address self.packageCity = City self.packageState = State self.packageZip = Zip self.packageDeadline = Deadline self.packageWeight = Weight self.packageNotes = Notes self.packageStatus = Status self.deliveryTime = Deliverytime # 自定义实例打印输出的内容 def __str__(self): return f"包裹ID:{self.packageID}, 地址:{self.packageAddress}, 城市:{self.packageCity}, 州:{self.packageState}, 邮编:{self.packageZip}, 配送截止时间:{self.packageDeadline}, 重量:{self.packageWeight}, 备注:{self.packageNotes}, 状态:{self.packageStatus}, 送达时间:{self.deliveryTime}" # 让嵌套在列表/字典里的实例也能输出可读内容 __repr__ = __str__
修改完成后即可正常打印所有字段内容,也可以放开你代码中注释掉的循环打印逻辑校验数据。
解决Pycharm拆分多文件后无法运行整套代码的问题
- 拆分文件参考规则:
- 把
hashtable类单独存为hash_table.py - 把
Package类单独存为package.py - 把加载数据、哈希表实例化、打印校验的主逻辑存为
main.py
- 把
- 跨文件引用规则:在需要用到其他类的文件开头加导入语句即可,比如
main.py开头需要添加:
from hash_table import hashtable from package import Package import csv
- 运行方式:直接在Pycharm的文件列表中右键点击
main.py,选择运行即可,Pycharm会自动加载所有被引用的依赖文件内容,不需要单独运行每个子文件。
内容的提问来源于stack exchange,提问作者dkeys
相关产品推荐
相关产品推荐

