A. 受け継ぎます
何を継承していますか?
継承は、両者の関係はどのような関係で説明されているものです。
プログラムでは、継承は、クラスとクラス間の関係を記述します。
たとえば、継承bの場合、すべての変数やメソッドbが直接呼び出すことができています。
クラスB: テキスト = 2 クラスA(B): パスプリント(A.text) #2
サブクラスと呼ばれ、Bは、基本クラスである親クラスと呼ばれています。
なぜあなたは、継承を使用する必要がありますか?
プロセスでは、継承を使用すると、効率の多くを入れます。
これは、当事者が直接一方の当事者が、いくつかのものを持って継承しました。これは、再利用性を向上させるための再利用がすでに既存のコードをことができます。
どのように継承を使用するには?
上記の例では、一度継承を使用していました。
Pythonでは、サブクラスが複数の親クラスを継承することができ、それが他の言語で行うことはできません。
II。抽象
抽象概念オブジェクトの方が重要です。
抽象定義は、物事が理解できない見て、クリアされていない、特定のではありません。
多くのクラスでは、このプロセスは、抽象化と呼ばれ、再確立、共通のクラスに、共通の基盤を見つけました。抽象後、全てのクラスは、彼らの共通点は、この抽象クラスは、親としてできています。
すべての開発プロセスを簡略化するために、あなたがすべき:
1.最初に抽象して、継承
2.オリジナルの機能を拡張または変更、既存のクラスを継承します。
III。物件検索順序
クラスA1: テキスト = 1 クラスB2(A1): テキストが = 2 、B1 = B2() b1.text = 3 プリント(b1.text)
独自のテキストなしオブジェクトb1.text出力が割り当てられている場合は、クラスのどれもが、親クラスを見ていない、場合、クラスは、デフォルト値を探します。すべての注文を検索し、次のとおりです。
オブジェクト自体 - >クラスは - >親クラスの親 - - >親を検索する>オブジェクト
IV。派生物
単語クラスの異なる内容で親クラスがある場合、単語クラスは、派生クラスです。
ときに親クラスとサブクラスと全く同じ、このサブクラスは、もはや必要ではないだろうので、Pythonで各クラスは、派生クラスがあります。派生クラスは、サブクラスを指します。
V. オーバーライドをカバー
カバレッジはまったく同じ答え親クラス名のプロパティとメソッドに表示されますサブクラスを指します。
VI。親クラスのサブクラスのアクセス
いくつかの方法は、あなたが望む親クラスにアクセスする場合は、サブクラスでは、super()を使用する必要があり、方法:
プロパティまたはメソッド(現在のクラス名、自己)1.super。あなたは親クラスを調整する必要が
クラスの父(): DEF say_6(自己): 印刷(' 666 ' ) クラス息子(父): デフ __init__ (自己): スーパー(息子、自己).say_6() スーパー()say_6()。 Father.say_6(自己) SON1 = ソン() #666 #666 #666
チューニングするプロパティやメソッドの2.super()。分類
3.クラス名。あなたがチューニング(自己)にしたい親クラス、多重継承のプロパティとメソッドサブクラスは、このような方法は、親クラスのメソッドで呼び出し、選択することができます。
これは、親クラスがメモリに純粋であり、方法及び相続とは無関係です。
VII。サブクラスの初期化。
さらにサブクラスは親クラスの__init__メソッドは、スーパーメソッド呼び出しの親クラスの__init__を使用して、彼らが必要なパラメータを渡し、それ以外の場合は、親クラスを失うことになる必要があり、サブクラスでオーバーライドされた後__init__特定の機能。
クラススタッフ: デフ __init__ (自己、名前、性別、年齢、賃金): self.name = 名前 self.gender = ジェンダー self.age = 年齢 self.wages =の賃金の クラスプログラマー(スタッフ): デフ __init__ (自己、名前、性別、年齢、賃金、スキル): スーパー()。__init__ (名前、性別、年齢、賃金) self.Skill =スキル
VIII。コンビネーション。
我々は機能を必要とし、この関数は、継承を介して取得することができない場合は、組み合わせて使用することができます。
組成物は、入ってくる別のクラスの最初のプロパティなどの別のクラスです。
例えば、英雄リーグの英雄でなく、機器があり、主人公のクラスが攻撃を装備し、攻撃する必要があるときに攻撃する必要があり、英雄が攻撃を取得する必要があり、武器とヒーローはクラスではないので、武器を継承することはできません、それはすることができます必要がヒーローを攻撃するために、着信クラスの英雄の性質、などの武器は、英雄は次のようにシミュレートガレンドーランを使用して、攻撃の武器と呼ばれるレイヴンに10時00分の血液を再生することができます。
クラスの設備: デフ __init__ (自己、名前、攻撃): self.name = 名前 self.attack = 攻撃 デフスタッフ(自己、OPP): opp.hp - = 10 クラスヒーロー: デフ__init__(自己、名前、HP、機器= 1 ): self.name = 名 self.hp = HP self.equipment = 設備 duolan =機器(' 多兰'、10 ) ガリン =ヒーロー(' 盖伦' 、100 、duolan) ruiwen =ヒーロー(' 瑞文'、100 、0) garin.equipment.staff(ruiwen) プリント(garin.hp、ruiwen.hp) #100,90
さらに、カップリング比の継承を低減する組合せ。
IX。ダイヤモンドの継承
クラスが複数の親クラス、および複数の親クラスを持っている場合はダイヤモンドの継承と呼ばれる共通の基底クラスを、持っています。
追加:新しいクラスとクラシック
新しいクラス:暗黙的に表示したり、新しいクラスと呼ばれるオブジェクトのクラスから継承(のpythonすべての新しいクラス、クラスの任意のオブジェクトクラスから派生しているのpython3します)
クラシック:サブクラスのオブジェクトではなく、唯一のpythonに表示されます
補足グラフトラバーサル
写真は、トラバーサル順序を示しているのpython3
写真はトラバーサルのpython3を示し
写真はトラバーサルのpython3とpython2を示し
幅に共通の親クラスに直面して、深いトラバーサルのダイヤモンドの継承があり、最初の新しいクラス、
新しいカテゴリは、深さ優先です。