多重継承ののpython3

  継承によって、サブクラスは親クラスの機能を拡張することができますので、継承は、オブジェクト指向プログラミングの重要な方法です。

  動物のクラス階層の設計、我々は次の動物4を達成したいとします

Dog-犬
BAT-バット
Parrot-オウム
Ostrich-ダチョウ

  あなたは、哺乳類や鳥類に従うなら、私たちは、そのようなレベルを設計することができます

  あなたが飛ぶと分類に従って実行することができれば、我々は層数を考案する必要があります

  両方の分類がすべての上にそれを含める必要がある場合は、我々はより多くのレベルを設計する必要があります

  

  • 哺乳類:実行哺乳類は、哺乳類は飛ぶことができます。
  • 鳥:実行鳥は、鳥が飛ぶことができます。

  あなたは再びそのような他のペットのクラスの数として分類、非ペットクラスを追加する場合は、クラスが指数関数的に成長するだろう、このデザインが動作しないことは明らかです

  正しいアプローチは、多重継承を使用することです。まず、メインクラス階層は、母乳や鳥のデザインに合わせて投げます:

クラス動物(オブジェクト):
  パス・
クラス哺乳動物(動物):
  パス・
クラス鳥(動物):
  パス・
クラス犬(哺乳類):
  パス・
クラスバット(哺乳類):
  パス・
クラスオウム(鳥):
  パス・
クラスダチョウ(鳥):
  合格

  今、私たちはただのRunnableクラスの良い定義を持っており、飛行可能動物プラスのRunnableと飛行可能機能を提供します

class Runnable(object):
  def run(self):
    print('Running...')

class Flyable(object):
  def fly(self):
    print('Flying...')

  对于需要Runnable功能的动物,就多继承一个Runnable,例如Dog

 class Dog(Mammal,Runnable):
   pass

  对于需要Flyable功能的动物,就多继承一个Flyable,例如Bat

 class Bat(Mammal,Flyable):
   pass

  通过多重继承,一个子类就可以同时获得多个父类的所有功能

  

  MixIn

  在设计类的继承关系时,通常,主线都是单一继承下来的,例如,Ostrich继承自Bird。但是,如果需要“混入”额外的功能,通过多重继承就可以实现,比如,让Ostrich除了继承自Bird外,再同时继承Runnable。这种设计通常称之为MixIn。

为了更好地看出继承关系,我们把RunnableFlyable改为RunnableMixInFlyableMixIn。类似的,你还可以定义出肉食动物CarnivorousMixIn和植食动物HerbivoresMixIn,让某个动物同时拥有好几个MixIn:

class Dog(Mammal, RunnableMixIn, CarnivorousMixIn):
    pass

  这样一来,我们不需要复杂而庞大的继承链,只要选择组合不同的类的功能,就可以快速构造出所需的子类。

  

  多重继承假如不同的大类定义了相同的方法或属性,在子类调用的时候优先级是怎么样的 ,参考 :https://www.cnblogs.com/minseo/p/11102757.html

 

おすすめ

転載: www.cnblogs.com/minseo/p/11102773.html