【问题标题】:TypeError: __init__() missing 1 required positional argument: 'Sage'类型错误:__init__() 缺少 1 个必需的位置参数:'Sage'
【发布时间】:2021-07-06 15:00:21
【问题描述】:

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()

我在运行这个函数时收到一个错误,告诉我传递来自我只想调用 Sid 的学生班级的 Sage。第一次使用多重继承时,相同的功能可以与其他类一起正常工作我该怎么办?

  • 学生构造函数是(Sid,Sname,Sage)
  • 课程构造函数是(Cid,Cname,Cstudents)

【问题讨论】:

  • 你的设计似乎是错误的:一个标记既不是学生也不是课程,它可能包含它们作为属性,它不是

标签: python python-3.x file multiple-inheritance


【解决方案1】:

您的模型似乎不好,Mark IS 既不是学生又不是课程(如牛 IS 是动物),而是标记由StudentCourse 的相关性定义,因此它可以将它们作为属性。

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))

【讨论】:

  • 这真是太棒了,它的工作原理,谢谢我在过去的 4 个小时里一直坚持这个,非常感谢。这就是所谓的多重继承吗?另外,不需要进口?
  • @Kittens 不,您的代码是多重继承。因为您不需要 Student 和 Course 课程,所以您不需要
  • 那么,类Marks不能使用多重继承吗?因为我没有给超类赋值,这是我希望根据我们的项目图做的事情
  • @Kittens 可以分享那个图表吗?继承意味着一个类是另一个类的子类,就像狗是动物,猫是动物。但标记是学生还是课程?完全没有,所以这里不需要继承
  • 代码必须使用多重继承这是我面临的问题我需要从父类中调用特定属性作为 txt 文件中的列,所以稍后我将使用此代码用于数据库目的
猜你喜欢
  • 2022-01-11
  • 2023-03-19
  • 2020-01-29
  • 2017-10-30
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多