学习素材:B站视频
建议先了解类class的使用方式
什么是类继承
类class有三个使用方式:
- 封装
- 继承
- 多态
其中,继承就是
子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
生活中的继承:
通俗点举例说明:
猫是动物,狗也是动物。那么“动物”类就是父类,“猫”和“老虎”就是子类。
子类都会继承父类的性质或者方法,比如“四条腿”、“有尾巴”、可以爬树
类继承的适用情况
类继承适用于子类有共同特征的时候,先利用共同特征(性质或方法)建立父类
在定义子类时,再区分子类各自不同的特征
类继承的具体使用
1、先定义父类(包括子类的共同特征和方法)
class Animal:
def __inif__(self,weight):
self.weight = weight
2、再定义子类(用super各自定义不同的特征和方法)
"子类(父类)"
class Cat(Animal):
def __inif__(self,weitht,catch_mice)
super() __inif__(self.weitht)
self.catch_mice = catch_mice
注意:
- 子类定义时,要写做——class 子类(父类),这样才能继承父类的特征
- 子类增加特有的性质时,利用super语句
类继承练习:人力系统
要求:
- # - 员工分为两类:全职员工 FullTimeEmployee、兼职员工 PartTimeEmployee。
- # - 全职和兼职都有"姓名 name"、"工号 id"属性,
- # 都具备"打印信息 print_info"(打印姓名、工号)方法。
- # - 全职有"月薪 monthly_salary"属性,
- # 兼职有"日薪 daily_salary"属性、"每月工作天数 work_days"的属性。
- # - 全职和兼职都有"计算月薪 calculate_monthly_pay"的方法,但具体计算过程不一样。
#先定义类Employee
class Employee:
def Employee_inti_(self,name,id):
self.name = name
self.id = id
def print_info(self):
#这里的引用格式为{self.性质},注意是self,而不是类的名称Employee
print("{self.name}的工号为{self.id}")
#定义全职为
class FullTimeEmployee(Employee):
def __init__(self, name, id, monthly_salary):
super().__init__(name, id)
self.monthly_salary = monthly_salary
# "为什么要return??"
def calculate_monthly_pay(self):
return self.monthly_salary
#定义兼职:有"日薪 daily_salary"属性、"每月工作天数 work_days"的属性。
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_pay(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_pay())