类的组合与继承对比
一、类的组合
- 1、概念:组合是指一个类的属性直接是另外一个类的实例
2、实现代码
class Hand(object): """ 定义一个手的类 """ def __init__(self, length): self.length = length def func(self): print('手能干活') class Foot(object): """ 定义一个脚的类 """ def __init__(self): pass def func(self): print('脚是用来走路的') class Person(object): """ 定义一个人类 """ def __init__(self): # 使用组合的方式将几个类组合在一起 self.hand = Hand(10) self.foot = Foot() def info(self): pass if __name__ == "__main__": p = Person() # 可以直接打印手类的属性 print(p.hand.length) p.hand.func() p.foot.func()
二、 关于类的组合与类的继承的选择问题
- 类的继承和组合都是将别的类的属性或者方法拿过来用
- 使用组合的情况:当类之间有显著不同,并且较小的类是较大类所需要的组件时候,就可以用组合
- 使用继承的情况:当类与类之间有相同的功能,提取这些共同的功能做成基类,用继承比较好