如何遍历Python列表打印属性并查看自定义对象内部内容?
解决CSV读取后City对象遍历打印问题
1. 解决City对象打印显示内存地址的问题
Python中直接打印对象时,默认调用父类object的__str__()方法,只会输出对象的内存地址。要让打印时显示对象内部属性,只需在City类中重写__str__()或__repr__()方法:
示例代码:
class City: def __init__(self, city_name, meal_type, price): self.city_name = city_name self.meal_type = meal_type self.price = price # 重写__str__,打印时返回自定义的属性字符串 def __str__(self): return f"City(city_name='{self.city_name}', meal_type='{self.meal_type}', price={self.price})" # 可选:重写__repr__,在交互式环境或列表打印时更友好 def __repr__(self): return self.__str__()
__str__()用于面向用户的友好显示,直接print(obj)时调用__repr__()用于面向开发者的精确表示,打印列表等集合时会自动调用
2. 遍历meals列表打印所有行的属性值
有两种简单实现方式:
方式一:利用重写的打印方法直接遍历
如果已经重写了__str__或__repr__,直接遍历列表打印每个对象即可:
import csv # 读取CSV并创建meals列表(假设CSV列名:city_name、meal_type、price) meals = [] with open('meals.csv', 'r', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: city_obj = City( city_name=row['city_name'], meal_type=row['meal_type'], price=float(row['price']) ) meals.append(city_obj) # 遍历打印 for item in meals: print(item)
方式二:手动指定打印属性
如果不想修改City类,也可以在遍历时直接访问对象属性打印:
for item in meals: print(f"城市:{item.city_name},餐品类型:{item.meal_type},价格:{item.price}")
内容的提问来源于stack exchange,提问作者Sarukira
相关产品推荐
相关产品推荐

