python:继承或组合

gru*_*czy 15 python inheritance dictionary composition

让我说我有class,它使用了一些功能dict.我过去常常在dict里面组合一个对象并从外部提供一些访问,但最近想过简单地继承dict并添加一些我可能需要的属性和方法.这是一个好的方式,还是我应该坚持作曲?

Phi*_*oin 13

继承经常被滥用.除非你的类被用作具有额外功能的通用字典,否则我会说组合是要走的路.

保存转发调用通常不是选择继承的充分理由.

从设计模式书:

在类继承上支持对象组合

理想情况下,您不必创建新组件来实现重用.您应该能够通过对象组合来组合现有组件,从而获得所需的所有功能.但这种情况很少发生,因为在实践中,可用组件的集合从来都不够丰富.通过继承重用可以更容易地创建可以用旧组件组成的新组件.因此,继承和对象组合一起工作.

然而,我们的经验是,设计师过度使用继承作为重用技术,并且通过更多地依赖于对象组成,设计通常变得更加可重用(并且更简单).

整个文本在这里:http: //blog.platinumsolutions.com/node/129

  • 请记住,Python非常灵活,对象组合很棒,但如果您只是将一对一映射到另一个对象,那么继承就是最佳选择. (3认同)
  • 我不认为它与Python的灵活性有任何关系,这是一个设计问题.如果要将一个对象的所有方法映射到另一个对象,那么您可能正在构建一个字典:使用继承.但是当原始海报上写着"我有类,它使用了dict的某些功能"时,它暗示了这个类并不打算用作字典. (3认同)