#python #python-3.x #file #multiple-inheritance
Вопрос:
Marks
класс
from Studentclass import Student
from Courseclass import Course
class Marks(Student, Course):
def __init__(self, Sid,Cid, Mark):
super().__init__(Sid,Cid)#Error line 7, in __init__ super().__init__(Sid,Cid) TypeError: __init__() missing 1 required positional argument: 'Sage'#
self.Mark = Mark
def __repr__(self):
return '({},{},{})'.format(self.Sid, self.Cid, self.Mark)
Основной код
from Studentclass import Student
from Courseclass import Course
from Marksclass import Marks
def read_populate_marks():
with open("Marks.txt", "r") as m:
marks_list = []
for line in m:
Sid, Cid, Mark = line.split(",")
marks = Marks(int(Sid), int(Cid), int(Mark))#Error line 37
marks_list.append(marks)
return marks_list
print(read_populate_marks()
Я получаю сообщение об ошибке при запуске этой функции, в котором мне предлагается передать Sage из класса учащихся, который я хочу назвать только Sid. та же функция отлично работает с другими классами при первом использовании множественного наследования. что мне делать?
- студенческий конструктор-это
(Sid,Sname,Sage)
- конструктор курса есть
(Cid,Cname,Cstudents)
.
Комментарии:
1. Ваш дизайн кажется неправильным : отметка не является ОДНОВРЕМЕННО и Студентом, и Курсом, она может содержать их в качестве атрибута, это не так
Ответ №1:
Похоже, что ваша модель не очень хороша, a Mark
не является одновременно студентом и Курсом (как Корова—животное), но Отметка определяется соотношением a Student
, и Course
поэтому она может иметь их в качестве атрибутов.
class Marks:
student_id: int
course_id: int
mark = int
def __init__(self, Sid, Cid, Mark):
super().__init__()
self.student_id = Sid
self.course_id = Cid
self.mark = Mark
def __repr__(self):
return '({},{},{})'.format(self.student_id, self.course_id, self.mark)
Этот призыв теперь последователен
marks = Marks(int(Sid), int(Cid), int(Mark))
Комментарии:
1. Это удивительно, что это работает, Спасибо, я застрял на этом в течение последних 4 часов, Большое вам спасибо. это то, что называется множественным наследованием? Кроме того, импорт не требуется?
2. @Котята Нет, ВАШ код был множественным наследованием. поскольку вам не нужны студенты и курсы, нет, вам это не нужно
3. Итак, невозможно использовать множественное наследование для меток классов? поскольку я не даю значения суперклассам, это то, что я хотел сделать, основываясь на нашей схеме проекта
4. @Котята Могли бы поделиться этой диаграммой ? Наследование означает, что класс является подклассом другого, как Собака-это Животное, Кошка-это Животное. Но Марк — студент или Курсант ? Вовсе нет, так что никакого наследования здесь не требуется
5. код должен использовать множественное наследование это проблема, с которой я сталкиваюсь, мне нужно вызывать определенные атрибуты из родительских классов в виде столбцов в файле txt, поэтому позже я буду использовать этот код для целей базы данных