неопределенная ошибка для унаследованных атрибутов класса в python - PullRequest
1 голос
/ 13 января 2020

Я создал рабочий класс класса, который наследует от ученика класса, но унаследованные атрибуты (имя, школа) рассматриваются как неопределенные программой

class Student:
    def __init__(self, name, school):
        self.name = name
        self.school = school
        self.marks = []

    def average(self):
        total = sum(self.marks)
        ItemNo = len(self.marks)
        ave = (total / ItemNo)
        print(ave)

    def friend(self, friend_name):
        # return a new student called "friend_name" in the same school as self
        friend = Student(friend_name, self.school)
        return "Anna's friend is {} and he also goes to {}".format(friend.name, self.school)


Anna = Student("Anna", "st.peters")
Anna.marks = [1, 2, 3, 5, 8]
print(Anna.name)
print(Anna.school)
print(Anna.marks)
print(len(Anna.marks))
Anna.average()
print(Anna.friend("Alex"))


class workingstudent(Student):
    def __init__(self, workplace, salary):
        super().__init__(name, school)
        self.workplace = workplace
        self.salary = salary

    def get_salary(self):
        return self.salary

    def get_workplace(self):
        return self.workplace


workingAnna = workingstudent("google", "$10,000")
print(workingAnna.get_salary())
print(workingAnna.get_workplace())

, когда код запускается унаследованными атрибутами имени и школа в рабочем классе рассматриваются как неопределенные

1 Ответ

1 голос
/ 13 января 2020
class workingstudent(Student):
    def __init__(self, workplace, salary):
        super().__init__(name, school)

name и school здесь действительно не определены. Вы должны передать их workingstudent.__init__:

def __init__(self, name, school, workplace, salary):

затем

working_student = workingstudent('name', 'school', 'workplace', 999)

Кстати, согласно соглашениям PEP8, имя класса должно быть WorkingStudent.

...