Класс Python (наследование) с использованием класса Person, Student, Professor

#python #class #inheritance

#python #класс #наследование

Вопрос:

Мне так трудно создавать код python для наследования классов. Родительским классом является «Класс Person», а подклассами являются «Класс Student» и «Класс Professor».

Я потратил много времени, но это слишком сложно понять. Я создал 1 родительский класс, 2 подкласса и методы. Я думаю, что многое из моего кода необходимо изменить, и я не знаю, как это исправить.

 class Person:
    def __init__(self,name,age,department):
        self.name = name
        self.age = age
        self.department = department
    def get_name():
        return self.name

class Student(Person):
    def __init__(Person,i_d,GPA,advisor):
        self.Person = Person
        self.i_d = i_d
        self.GPA = GPA
        self.advisor = advisor
    def print_info():
        print("Name: %s, Age: %d, Department: %s, Advisor: %s " %(Person.name,Person.age,Person.department,Student.advisor))
    def reg_advisor():
        return Professor.name

class Professor(Person):
    def __init__(self,position,laboratory,student):
        self.position = position
        self.laboratory = laboratory
        self.student = student
    def print_info():
        print("Name: %s, Age: %d, Department: %s, Student: %s and %s " %(Person.name,Person.age,Person.department,Professor.student))
    def reg_student():
        return Student.name


Stu1 = Student("David", 30, "Computer", 20001234, 4.5)
Stu2 = Student("Tom", 30, "Computer", 20001234, 4.5)
prof1 = Professor("Andrew", 55, "Computer", "Full", "DT") # The last element is the list of student.

stu1.reg_advisor(prof1)
stu2.reg_advisor(prof1)
prof1.reg_student(stu1)
prof1.reg_student(stu2)

stu1.print_info()
stu2.print_info()
prof1.print_info()
  

Результат должен быть:

 # Name: David, Age: 30, Department: Computer, Advisor: Andrew)
# Name: Tom, Age: 30, Department: Computer, Advisor: Andrew)
# Name: Andrew, Age: 55, Department: Computer, Students: David and Tom)
  

Я бы предпочел, чтобы не добавлять и не удалять методы.

Любая помощь будет принята с благодарностью.

Комментарии:

1. В вашем коде много синтаксических ошибок. Вам было бы полезно ознакомиться с классами, подклассами и наследованием python. docs.python.org/2/tutorial/classes.html .

2. Существует множество ошибок, начиная с непоследовательного имени переменной. Например, от Stu1 до stu1 и непонимание наследования, когда дело доходит до инициализации. Я бы предложил начать с двух классов, понять, как работает единое наследование и композиция. Использование super для расширения вызова унаследованного класса и перехода к классу множественного наследования C(A, B):pass 🙂