Я работал над 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()
в List Object.
Я погуглил эту проблему и обнаружил, что map()
и methodcaller()
могут использоваться для вызова методов класса, но они не работают для меня.
Я знаю, что этот вопрос был несколько раз спрашивал о StackOverflow, но я думаю, что ни один из них не решил мою проблему: « вызов нескольких методов класса из объекта путем выбора объектов один за другим из списка объектов класса. '
Любая помощь будет оценена. Заранее спасибо.