继承:表面意思就是说一个类继承了另一个类的所有属性及方法函数等,这里两个类就是‘属于’的关系,被继承的类叫父类,或基类或超类,继承别人家的类叫子类或者派生类,两者继承的东西,可以理解为父类有的子类都有,那么父类中已经有的,我再写子类的时候,就不用再重复写父类的函数或者属性了,直接调用即可。
当然,在父类的属性或者函数方法无法满足子类时,子类可以自己重写一些属性或者函数方法等,那重写尼,分为以下两类:
1.部分重新,保留父类中的属性及函数方法,重新写一些新的属性函数方法。
2.就是全部重写,直接覆盖父类原有的功能。
下面就举个简单的例子!
class People(object):
def __init__(self, name, age, weight):
self.name = name
self.age = age
self.weight = weight
# People类的对象执行work_time()函数时,计算工作后的体重
def work_time(self, time):
"""
根据工作时间,增减体重
:param time: 工作时间
:return: None
"""
"""
如果工作时间<=8 小时 体重不变
如果工作时间大于8,小于等于12小时 ,体重-2斤
如果工作时间大于12小时 体重-4斤
"""
if time <= 8:
pass
elif time <= 12:
self.weight -= 2
else:
self.weight -= 4
print('{s.name}工作了{t}个小时之后,体重为{s.weight}斤。'.format(s=self, t=time))
class Man(People):
def __init__(self, name, age, weight, height, money):
# 初始化父类中写好的属性
super(Man, self).__init__(name, age, weight)
# 初始化当前类拥有的一些属性
self.height = height
self.money = money
# Man类的对象执行work_time()函数时,除了要计算体重之外,还要计算身材是否标准
# 父类中的work_time()函数满足不了Man类的要求,部分重写父类函数
def work_time(self, time):
# 1.保留执行父类功能
super(Man, self).work_time(time)
# 2.添加新功能
# 身高 - 105 = 体重(kg) 标准
# 身高 - 105 > 体重(kg) 偏瘦
# 身高 - 105 < 体重(kg) 偏胖
if self.height - 105 == self.weight//2:
print('标准身材')
elif self.height - 105 > self.weight//2:
print('偏瘦身材')
else:
print('偏胖身材')
p1 = People('张三', 21, 170)
p1.work_time(12)
m1 = Man('李四', 22, 180, 180, 10000)
m1.work_time(12)
根据上面的代码,你应该就知道了继承的优势:可以更好的实现代码的重用