了解Inheritan

2024-03-28 11:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更好地理解遗传。在下面的代码中,当我尝试打印friend.salary时,它抛出一个AttributeErrorWorkingStudent不是继承了Student类的所有方法吗?你知道吗

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

    def average(self):
        return sum(self.marks)/len(self.marks)

    def friend(self,friend_name):
        return Student(friend_name, self.school)

anna = Student("Anna","MIT")
friend = anna.friend("Motilal")
#print (friend.name)
#print (friend.school)

class WorkingStudent(Student):
    def __init__(self,name,school,salary):
        super().__init__(self,name,school)
        self.salary = salary
        anna = WorkingStudent("Anna","SXS",25000)
anna.friend("Greg")
anna.marks.append(50)
print friend.salary 

Tags: nameselffriendreturninitdefstudentclass
1条回答
网友
1楼 · 发布于 2024-03-28 11:22:07

你应该修改你的源代码如下

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

    def average(self):
        return sum(self.marks)/len(self.marks)

    def friend(self,friend_name):
        return Student(friend_name, self.school)


anna = Student("Anna","MIT")
friend = anna.friend("Motilal")
#print (friend.name)
#print (friend.school)


class WorkingStudent(Student):
    def __init__(self,name,school,salary):
        super(WorkingStudent,self).__init__(name,school)
        self.salary = salary
        # anna = WorkingStudent("Anna","SXS",25000)
    def friend(self,friend_name):
        return WorkingStudent(friend_name, self.school, self.salary)

# You should put your code here, because as your original code
# anna is an instance of Student not WorkingStudent class
# so it and its friend don't have "salary".
anna = WorkingStudent("Anna","SXS",25000) # After this line, anna is a different variable to "anna" variable that was defined before (anna = Student("Anna","MIT"))
friend = anna.friend("Greg") # friend now is an instance of WorkingStudent class, so it have salary
anna.marks.append(50)
print(friend.salary)

编辑。所以代码现在可以工作了

相关问题 更多 >