Работа с классами и конструктором Python

Каждый класс реализовать в отдельном модуле, импортируя их в производные модули. Создать класс Person с полями имя, фамилия, возраст. Добавить конструктор класса. Создать производный от Person класс Student. Новые поля: номер студенческого билета, зачетная книжка (словарь вида предмет: отметка). Определить конструктор, с вызовом родительского конструктора. Определить функции добавления отметки в зачетную книжку, получения отметки по предмету, форматированной печати всей зачетной книжки. Переопределить метод преобразования в строку для печати основной информации (ФИ, возраст, номер студенческого). Создать производный от Person класс Professor. Новые поля: номер удостоверения, должность, преподаваемые предметы (список строк). Определить конструктор, с вызовом родительского конструктора. Определить функции изменения должности, добавления и удаления предмета. Переопределить метод преобразования в строку для печати основной информации (ФИ, возраст, номер удостоверения, должность). Создать класс Group. Поля: номер группы, список группы (список экземпляров класса Student), преподаватель-куратор (экземпляр класса Professor). Определить конструктор. Переопределить метод преобразования в строку для печати всей информации о группе (с использованием переопределения в классах Professor и Student). Переопределить методы получения количества студентов функцией len, получения студента/преподавателя по индексу, изменения по индексу, удаления по индексу (0 индекс - преподаватель, начиная с 1 - студенты). Переопределить операции + и - для добавления или удаления студента из группы. Добавить функцию создания txt-файла и записи всей информации в него (в том числе зачетной книжки студентов). Предусмотреть хотя бы в 3 местах обработку возможных исключений. В каждом модуле провести подробное тестирование всех создаваемых объектов и функций.

ВОПРОСЫ:

Как мне создать словарь зачетная книжка(словарь вида предмет: отметка) и связать его с клиентом?

Как в класс передать список группы (список экземпляров класса Student)?

Переопределить методы

МОЙ КОД:

class Person:
    def __init__ (self, name, surname, age):
        self.name = name
        self.surname = surname
        self.age = age

class Student(Person):
    def __init__ (self, bil_num, zach):
        self.bil_num = bil_num
        self.zach = zach

    def __str__(self):
        s = "Surname: {} Name: {}\nage: {}, num_ticket: {}".format(self.surname, self.name, self.age, self.bil_num)
        return s

class Professor:
    def __init__(self, n_ud, dolzhnost, subjects):
        person.__init__(self, name, surname, age)
        self.n_ud = n_ud
        self.dolzhnost = dozhnost
        self.subjects = []

    def __str__(self):
        st = "Surname: {} Name: {}\nage: {},num_udost: {}, doljnost: {}".format(self.surname,self.name,self.age,self.n_ud,self.dolzhnost)
        return st

class Group:
    def __init__(self, n_group, lst_spisok, professor):
        self.n_group = n_group
        self.lst_spisok = lst_spisok
        self.professor = professor

person1 = Person("Alina","Kuznetsova","24")
person2 = Person("Sergey","Voronin","15")
person3 = Person("Anna","Butymova","46")
person4 = Person("Aleksey","Petrov","34")
person5 = Person("Kirill","Pitinov","19")
person6 = Person("Natalia","Koroleva","38")
person7 = Person("Maxim","Fadeev","26")
person8 = Person("Alla","Kazantseva","31")
person9 = Person("Grigory","Artyuhin","50")
person10 = Person("Nikita","Grigoryev","23")

professor1 = Professor("1","Lector", ["math", "physik"])
professor2 = Professor("2","Zavuch", ["him", "bio"])
professor3 = Professor("3","Pedagog", ["inf", "oop"])
professor4 = Professor("4","Dekan", ["physex"])
professor5 = Professor("5","Director", ["Pravo", "smth"])

Ответы (0 шт):