私は継承をよりよく理解しようとしています。次のコードでは、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__'の中にあるはずですか? – BrenBarn
ええ、それはそのくぼみでうまくいきました。私はそれが正しい字下げだと思う。 – learner
[Pythonの派生クラスと基本クラスの属性]の複製がありますか?(https://stackoverflow.com/questions/6396452/python-derived-class-and-base-class-attributes) –