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

Python两个类实例追加到同一列表,循环调用展示方法报属性错误如何解决?

错误原因

college_records列表同时存储了Students和Instructor两个类的实例,全局遍历调用display_student_information()时,Instructor类实例不存在该方法,因此触发属性错误。

解决方案

方案1:增加类型判断(快速修复)

使用Python内置isinstance()方法判断实例所属类,再调用对应方法,单次遍历即可完成所有信息展示:

for item in college_records:
    if isinstance(item, Students):
        item.display_student_information()
    elif isinstance(item, Instructor):
        item.display_instr_information()

如果需要分开两次分别展示学生、讲师列表,调整遍历逻辑即可:

# 仅展示学生信息
for item in college_records:
    if isinstance(item, Students):
        item.display_student_information()

# 仅展示讲师信息
for item in college_records:
    if isinstance(item, Instructor):
        item.display_instr_information()

方案2:统一方法名(符合面向对象设计规范)

给两个类定义同名的信息展示方法,利用多态特性简化调用,不需要额外做类型判断。

  1. 类定义调整示例:
class Students:
    # 其余原有逻辑保持不变
    def display_info(self):
        # 写入原有display_student_information的实现逻辑
        pass

class Instructor:
    # 其余原有逻辑保持不变
    def display_info(self):
        # 写入原有display_instr_information的实现逻辑
        pass
  1. 遍历调用代码:
for item in college_records:
    item.display_info()

该方案扩展性更强,后续新增其他人员类(如行政人员)时,只要对应实现display_info()方法,不需要修改遍历调用代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:45:00