编写类时,并非总是要从空白开始、如果你 要编写的类是另一个现成类的特殊版本,可以使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
1.子类的方法__init__()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此子类的方法_init_需要父类
下面是实操和详细代码解释
#类继承练习:
#分为两类 全职员工FullTimeEmployee,兼职员工 PartTimeEmployee
#全职和兼职都有姓名name、工号id属性
#都具有打印信息 print——info方法
#全职有月薪 monthly——salary
#兼职有日新 daily——salary、每月工作天数 work——days属性
#全职和兼职都有计算月薪 calculate_monthly_pay的方法
class Employee: #定义一下员工这个父类
def __init__(self,name,id): #然后把姓名工号属性放在构造函数里面
self.name=name
self.id=id
def print_info(self): #定义一个打印信息的方法
print(f"员工姓名:{self.name},工号:{self.id}")#把名字和编号打印出来
#然后是全职员工类,全职员工类继承员工类
class FullTimeEmployee(Employee): #类名里面加上括号
#姓名和工号的初始方法已经在父类里面写好了,我们还缺月薪属性
def __init__(self,name,id,monthly_salary): #还要把全职用工的自己的月薪属性写上
super().__init__(name,id)
# 用super表示父类 并用init调用父类的构造函数
self.monthly_salary=monthly_salary
def calculate_monthly_pay(self):
return self.monthly_salary #计算全职员工的月薪
#兼职员工
class PartTimeEmployee(Employee):
def __init__(self,name,id,daily_salary,work_days):
super().__init__(name, id)
self.daily_salary=daily_salary
self.work_days=work_days
def calculate_monthly_salary(self):
return self.daily_salary*self.work_days
zhangsan=FullTimeEmployee("张三","1001",6000) #创建张三给他属性
lisi=PartTimeEmployee("李四","1002",230,15)
zhangsan.print_info() #调用打印方法
lisi.print_info()
print(zhangsan.calculate_monthly_pay()) #调用计算工资方法
print(lisi.calculate_monthly_salary())