前言
组合:在一个类的属性中调用了另一个类,将另一个类的对象作为数据属性,称为类的组合。
继承:一种新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类,先有父类才会有子类
一、类组合
组合指的是,在一个类中调用了另一个类,将另一个类的对象作为数据属性,称为类的组合。
1、组合实例1:
①Ojb_1是装备库类,func_name是一件装备,人物装备后会增加1000的战力,self.agg=原人物的战力
②Ojb_2是角色类,有角色的名称与原角色的战力等信息,self.Ojb_1是将原人物的战力先传至装备库,只要人物调用装备了func_name就会在原战力基础上增加1000
# 1、组合实例 class Ojb_1: '''假设Ojb_1是一个装备库类,func_name是其中一件装备,装备后加1000战力。''' def __init__(self, agg): self.agg = agg def func_name(self): self.agg += 1000 # 在本身的战力上+1000 return self.agg # 返回最终战力 class Ojb_2: '''假设Ojb_2是一个角色类,每个角色都有名称等信息''' def __init__(self, name, agg): self.name = name # 角色名称 self.agg = agg # 本身的战力 self.Ojb_1 = Ojb_1(self.agg) # 将该人物原来的战力传到装备库类 if __name__ == '__main__': '''假设广深小龙原来战力=500''' r1 = Ojb_2('广深小龙', 500) res = r1.Ojb_1.func_name() print(res)
2、组合实例2
假如:我是一个人类,叫广深小龙,我学的是Python,我的生日是1999年6月6日,工作是IT,地址是广深
# 2、实例2 # 我是一个人,叫广深小龙,我学的是Python,我的生日是1999年6月6日,工作是IT,地址是广深 class Work: '''工作是IT,用的是Python,所以我学习Python''' def work_lg(self, work='IT', lg='Python'): return '工作是:%s,用的是:%s' % (work, lg) class Birth: '''出生日期:birth,地址:address''' def birth_add(self, birth, address): return '出生日期:%s,地址:%s' % (birth, address) class Race: def __init__(self, name): self.name = name self.Work = Work() self.Birth = Birth() if __name__ == '__main__': r = Race('广深小龙') print(r.Work.work_lg()) print(r.Birth.birth_add('1996.6.6', '广深'))
二、初识继承
就好像人、猪等动物,抽取成为一个动物的父类,人类、猪都可以继承动物为父类:
1、简单认识继承,顺序:父类在上面,子类在后面。(父总比子出生得早)
# 1、初识继承 class A:pass class B:pass # Python语言中一个类可继承多个父类 class AB_son(A, B):pass # 继承了A、B类 print(AB_son.__bases__) # 查看父类 print(A.__bases__) # 没有继承父类,默认是类的祖宗:object
2、继承用法
实例化子类后,可以用子类调用父类的某个方法:
# 2、继承用法实例 class Work: '''工作是IT,用的是Python,所以我学习Python''' def work_lg(self, work='IT', lg='Python'): return '工作是:%s,用的是:%s' % (work, lg) class Race(Work): # 继承了 Work 类 def __init__(self, name): self.name = name if __name__ == '__main__': r = Race('广深小龙') res = r.work_lg() # 直接调用父类的方法 print(res)
总结:
- 只要是子类的对象调用,子类中有的名字 一定用子类的,子类中没有才找父类的,如果父类也没有报错
- 如果父类 子类都有 用子类的
- 如果还想用父类的,单独调用父类的:父类名.方法名 需要自己传self参数
正常的代码中 单继承 === 减少了代码的重复,继承表达的是一种 子类是父类的关系!
欢迎来大家QQ交流群一起学习:482713805 !!!