组合
什么是组合?
一个对象的属性是来自于另外一个类的对象,称之为 组合。
为何用组合?
组合也是用来结解决类代码冗余的问题。
如何使用?
继承是一种很有用的技术,不过还有一种实现相同功能的方法(组合),就是直接使用别的类和模块,而非依赖于隐式继承。
class Other(object): def override(self): print("othre override()") def implicit(self): print("other implicit()") def altered(self): print("other altrred()") class Child(object): def __init__(self): self.other=Other() def implicit(self): self.other.implicit() def override(self): print("CHILD override()") def altered(self): print("CHILD,BEFORE OTHER altered") self.other.altered() print("CHILD,AFTER OTHER altered()") son = Child() son.implicit() son.override() son.altered()
结果:
other implicit()
CHILD override()
CHILD,BEFORE OTHER altered
other altrred()
CHILD,AFTER OTHER altered()
这里的关系是 “A”里有“B” ,可以看出Child 和Other 里的大部分内容是一样的,做一样的事,唯一不同的是我必须定义一个Child。implicit 函数来完成它的功能