咨询Python实现showList方法按类型筛选打印对象的代码是否可行
你的代码不可行,存在多处关键问题
参数设计完全错误:
Python要求默认参数必须放在非默认参数之后,你把默认参数b放在参数列表最前面,会直接触发语法错误。另外参数逻辑混乱,不需要三个独立参数,应该用一个参数(比如mode)控制显示类型,取值设为s(学生)、f(教职工)、b(两者),并把b作为默认值。类型判断逻辑颠倒:
isinstance()的正确用法是isinstance(待判断对象, 目标类),你现在写的isinstance(s, Student)是在检查参数s是不是Student的实例,完全偏离需求——应该检查遍历到的directory元素i是不是Student或Faculty的实例。循环逻辑失效:
你在循环里直接用return,会导致方法遍历第一个元素时就直接终止,根本没法遍历整个directory列表并打印所有符合条件的元素。而且return True, "Student"这种返回值也不符合需求,你需要的是打印信息,不是返回元组。无意义的判断语句:
elif isinstance(b, b)是错误写法,b是参数,这里相当于判断b是不是自身的实例,逻辑上毫无意义,和需求完全无关。
修正后的代码示例
class YourClass: # 假设showList是某个类的方法 def __init__(self): self.directory = [] # 初始化directory列表 def showList(self, mode='b'): for item in self.directory: if mode == 's' and isinstance(item, Student): print(f"学生信息: {item.name} {item.id}") # 替换为实际要打印的学生属性 elif mode == 'f' and isinstance(item, Faculty): print(f"教职工信息: {item.name} {item.department}") # 替换为实际要打印的教职工属性 elif mode == 'b': if isinstance(item, Student): print(f"学生信息: {item.name} {item.id}") elif isinstance(item, Faculty): print(f"教职工信息: {item.name} {item.department}")
内容的提问来源于stack exchange,提问作者Joshua Zimmerman
相关产品推荐
相关产品推荐

