我在研究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())
学生班代码为:
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上被问了很多次,但是我认为没有一个问题解决了我的问题
通过从类对象列表中逐个选择对象,从对象中调用多个类方法。
任何帮助都将不胜感激。提前谢谢。