两个类,一个是 Student
, 另一个是 WorkingStudent
,WorkingStudent
比 Student
多了一个 salary
属性,如果写成两个独立的类,代码如下:
class Student:
def __init__(self, name, school): # dunder 函数,构造函数
self.name = name
self.school = school
self.marks = [] # 分数
def average(self): # 计算平均分
return sum(self.marks) / len(self.marks)
class WorkingStudent:
def __init__(self, name, school, salary):
self.name = name
self.school = school
self.marks = []
self.salary = salary # 工资
def average(self):
return sum(self.marks) / len(self.marks)
这种写法,大部分代码都是重复的,为了避免重复,改为使用继承,使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)
class WorkingStudent(Student):
def __init__(self, name, school, salary):
super().__init__(name, school) # super() 是 Student
self.salary = salary