快速了解python中的组合和继承

快速了解python中的组合和继承
1. 继承Inheritance是Is-a关系子类继承父类的属性和方法目的是复用父类的代码并在此基础上扩展或重写。class Person: def __init__(self,name,age): self.age age self.namename def get_name(self): return self.name def get_age(self): return self.age def get_info(self): return fage:{self.age},name{self.name} def speed(self): print(100) def __str__(self): return self.get_info() def __repr__(self): return self.__str__() class SuperPerson(Person): def __init__(self,name,age,skill): super().__init__(name,age) self.skill skill def get_skill(self): return self.skill def get_info(self): return f{super().get_info()},skill:{self.age} s SuperPerson(变形金刚,20,变身) s1 Person(da,11) print(s.get_name()) s.speed() print(s.skill) print(s.get_info()) print(s1.get_info())2. 组合Composition有Has-a关系一个类包含另一个类的实例作为自己的属性目的是利用其他类的功能而不是成为它。class Point: def __init__(self,x,y): self.x x self.y y def get(self): return self.x def __repr__(self): return f{self.x},{self.y} class Circle: def __init__(self,center,r): self.center center self.r r def __repr__(self): return f{self.center},{self.r} c1 Point(2,3) c2 Point(4,5) c3 Circle(c1,2) c4 Circle(c2,3) c5 c1.get() print(isinstance(c5,Point)) print(c1,c2,c3,c4) datas [] for i in range(1,10): a Point(i,i) b Circle(a,i) datas.append(b) print(datas)维度 继承 (Inheritance) 组合 (Composition)关系 Is-a子类是一种特殊的父类 Has-a类拥有某个部件代码复用 静态复用编译/定义时确定 动态复用运行时绑定封装性 破坏封装子类能访问父类受保护成员 保持封装只能通过公开接口调用灵活性 低父类改子类必改 高可随意切换内部组件粒度 垂直结构类层次树 水平结构组装模块