gpt4 book ai didi

python - 从类对象列表中调用类方法的更好方法 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:44 25 4
gpt4 key购买 nike

我正在研究 Python 类,发现无法通过循环访问此类对象的列表来从类对象调用类方法。下面是示例代码:

def show_student_details(*s_list):
for s in s_list:
print("Roll Number: ", s.get_roll_no())
print("Name: ", s.get_name())
print("Phone: ", s.get_phone())
print("Marks: ", s.get_marks())

Student 类的代码是:

class Student:

def __init__(self, roll_no=0, name="", phone="", marks=-1):
self.__roll_no = roll_no
self.__name = name
self.__phone = phone
self.__marks = marks

def get_roll_no(self):
return self.__roll_no

def get_name(self):
return self.__name

def get_phone(self):
return self.__phone

def get_marks(self):
return self.__marks

通过传递 Student 类的一些对象来运行这段代码会出现以下错误:

  File "main.py", line 88, in <module>
show_student_details(students)
File "main.py", line 12, in show_student_details
print("Roll Number: ", s.get_roll_no())
AttributeError: 'list' object has no attribute 'get_roll_no'

我理解的是,List 本身就是一个类,Python 解释此代码就像我在列表对象上调用 get_roll_no() 函数一样。

我用谷歌搜索了这个问题,发现map()methodcaller()可以用来调用类方法,但它们对我不起作用。

我知道这个问题已在 StackOverflow 上被问过多次,但我认为他们都没有解决我的问题,即“通过从类列表中逐一选择对象来从对象调用多个类方法”对象。'

任何帮助将不胜感激。提前致谢。

最佳答案

假设您将学生列表传递给函数,例如 ([<__main__.Student object at 0x122d85990>, <__main__.Student object at 0x122d85910>],)
,您可以使用:

def show_student_details(*s_list):
for s in s_list[0]:
print("Roll Number: ", s.get_roll_no())
print("Name: ", s.get_name())
print("Phone: ", s.get_phone())
print("Marks: ", s.get_marks())

因为 *s_list 将您的输入转换为列表。或者,您应该能够只使用

def show_student_details(s_list):
for s in s_list:
print("Roll Number: ", s.get_roll_no())
print("Name: ", s.get_name())
print("Phone: ", s.get_phone())
print("Marks: ", s.get_marks())

关于python - 从类对象列表中调用类方法的更好方法 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59971399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com