【发布时间】:2020-01-29 16:22:13
【问题描述】:
我正在研究 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 上被问过多次,但我认为他们都没有解决我的问题,即“通过从类列表中一一选择对象来调用对象的多个类方法对象。'
任何帮助将不胜感激。提前致谢。
【问题讨论】:
标签: python python-3.x oop