【发布时间】:2017-08-05 03:12:45
【问题描述】:
我试图更好地理解继承。在下面的代码中,当我尝试打印friend.salary 时,它会抛出一个AttributeError。 WorkingStudent不是继承了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
【问题讨论】:
-
你的缩进是否正确?那条
anna = WorkingStudent(...)真的应该在__init__里面吗? -
是的,这个缩进效果很好。我认为这是正确的缩进。
-
不要以其他学生的方法创建学生,那不是他们的工作。直接调用
motilal = Student("Greg", anna.school)或greg = WorkingStudent("Greg", anna.school)创建学生。 -
我将您的问题陈述移到您的代码块之前。使用一些上下文来消化代码通常更容易。详情请见How to Ask。
标签: python inheritance