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

Python中使用pandas读取Excel列表数据实例化自定义类失败如何解决?

问题原因及解决方法

核心问题

你的代码本身没有语法错误,实例已经正常创建并存入了potion_instances列表,你误以为「没有效果」的核心原因是自定义类没有定义字符串表示方法,直接打印实例/实例列表时只会输出内存地址,看不到具体属性值,容易被误判为创建失败。

另外还有一个小的类型差异点:pandas读取Excel时serial_number字段会被识别为整数类型,你手动测试时传入的是字符串类型,如果你后续类逻辑有针对字符串的校验/处理,可能会出现隐性问题。

解决步骤

  1. 给自定义Asset类添加__repr__方法,用于输出实例的具体属性,方便调试查看:
class Asset():
    """ class to create assets """
    def __init__(self, hostname, serial_number, city):
        self.hostname = hostname
        self.serial_number = serial_number
        self.city = city
    
    # 新增字符串表示方法
    def __repr__(self):
        return f"Asset(hostname='{self.hostname}', serial_number={self.serial_number}, city='{self.city}')"

添加后直接打印potion_instances列表就能看到每个实例的具体属性值。

  1. (可选)如果你需要serial_number统一为字符串类型,可以在读取后转换字段类型,和手动传参的格式保持一致:
df = pd.read_excel('some_assets.xlsx', sheet_name='Tabelle1') 
df1 = df[['hostname', 'serial_number', 'city']]
# 转换serial_number为字符串类型
df1['serial_number'] = df1['serial_number'].astype(str)
potions = df1.values.tolist()
  1. 验证创建结果:你可以通过以下代码确认实例是否正常创建:
# 输出列表长度,应为6,和Excel行数一致
print(len(potion_instances))
# 输出第一个实例的hostname属性,应为host1
print(potion_instances[0].hostname)
# 输出第一个实例的serial_number属性,应为2312312
print(potion_instances[0].serial_number)

内容的提问来源于stack exchange,提问作者Mr. Miyagi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:03