まず、何が継承されています
継承は何の関係が何であるかを、記述されている2つのオブジェクト間の関係です。あなたが同じプロパティやメソッドを使用することができ、二つのクラス間の関連性は何ですか。
例えば、Bは、既存のメソッドとプロパティで直接使用することができ、Bを継承しました。
サブクラスと呼ばれ、bは親クラスと呼ばれ、また、基底クラスと呼ばれます。
第二に、なぜ継承を使用する必要があります
継承の当事者は、その目的は、再利用性を向上させ、すでに書かれたコードを再利用することで、当事者は、いくつかのものを持って継承を直接使用することができます。
第三に、どのように継承を使用する方法
構文:
クラスの クラス名(親クラスの名前): コンテンツクラスの #要約したダイヤモンドの継承の背後にある複数の親クラスを継承することができ、サブクラスでのpythonで
第四に、抽象的な概念
これは、我々は通常曖昧言う概念の抽象的ではなく、具体的な説明を参照していません。
これは、また、抽象プロセスとして知られるプロセスを新たなクラスを形成するために、同じサブクラス、抽出の複数の部分です。
正しい使用は、メソッドを継承しました。
1.最初に抽象して、継承
2.既存のクラスを継承し、元の機能を拡張または変更
第五に、プロパティの検索順序
親の親の親クラスを見つけるために、オブジェクトが独自のクラスに位置しています>>> >>> >>> >>>オブジェクト
六誘導体(これは知識を覚えておくだけのポイントである、我々は通常、名前だけだったかわからない、書きます)
サブクラスの異なる内容で親クラスがある場合、このサブクラスには、派生クラスと呼ばれています。
通常、サブクラスは、いくつかの新しいコードを記述します、と親は通常クラスを派生している、完全に同じにすることはできません。
だから、派生クラスは、サブクラスを参照します
(これは理解するための知識である場合のみ)をカバーするために七、
親クラス名属性の方法と完全に一致表示され書き換えられサブクラスのオーバーライドと呼ぶことができますか、
継承リストは、唯一のintデータ型を追加し決定するためにappendメソッドを書き換え、追加に失敗することはできません
強調!!!(ベストはそうします)
あなたは授業時間を継承し、あなたが先祖の__init__メソッドをオーバーライドするときは、パラメータの親のニーズを渡して、初期化メソッドの1行目に、親クラスの初期化メソッドを呼び出す必要があります。
クラスマイリスト(リスト): DEF __init__ (セルフ、タイプ): スーパー()__init__() #親クラスから継承された__init__方法 self.type型= #1 送信パラメータの例 DEF アペンド(セルフ、NUM): IFタイプ(NUM)==の:self.type 。スーパー()APPEND(NUM) を印刷(' 正常に追加' ) 他: 印刷(' の追加に失敗しました、あなたはパラメータのデータ型を渡すことはありません' ) のp- = マイリスト(INT)#設定値は、タイプ通過 p.appendを( 2)値#2を通過します
八の組み合わせ(これも非常に重要であり、継承されたほとんどの有用性)
2つのオブジェクト間の関係が関係するものであるかを説明され 、例えば、学生が携帯電話を持って、ゲームキャラクタは、特定の機器を持っています
他のオブジェクトの属性としてオブジェクト(他のオブジェクトに渡されたパラメータとして、そのオブジェクトのインスタンス)
客観組み合わせ: また、既存のコードを再利用します
継承を使用するとき:それはクラスに属している場合、二つのクラス間の関係を分析し、それを継承することができます。
たとえば、次のようにあり、動物の食事と睡眠は人間を食べて、寝て、ある持っているが、我々は通常、人間が動物を食べて、寝て継承されない、論理的に正当化されていますが、それを行うにしたい場合、または使用することができますすることはできませんが、人間は少し奇妙な動物を継承しています。ヒトおよび動物のクラスは、他の側から継承し、親クラスの食事と睡眠をそこに書くことができます。
二つのクラスの間には有意な関係が存在しない場合は、同じに属さない:の組み合わせを使用するとき。
さらに、比較階層組成、結合度が低いです
二つのクラス:電話、学生。今需要学生はまた、ロジックは意味がない場合は、ここで継承を使用し、call_phoneクラスメソッド内で携帯電話を使用したい、の組み合わせでのみ使用することができています
クラス電話: DEF __init__ :(セルフ、一種,.価格) self.kind = 種類 self.price = 価格。 DEFのCALL_PHONE(セルフ): 印刷(' コール' ) クラスの学生: DEF __init__ (セルフ、名前、年齢、電話番号) :#ここでは、パラメータを追加することを忘れないでください self.name = 名前 self.age = 年齢 self.phoneあまりにも、ここでは=電話番号を、プラス DEF (自己)show_info: 印刷("名前:年齢%S:%S "%(self.name、self.age)) 電話 =電話(' アップル'、10000 ) S1 =学生(' ローズ'、20は、携帯電話)#パラメータとして渡された携帯電話のオブジェクトS1でオブジェクト s1.phone.call_phone()
九、親クラスのコンテンツへのアクセスをサブクラス化
文法
。モード1: スーパー(現在のクラス名、自己)あなたは親クラスのプロパティやメソッドを調整したい。 マナー2: スーパー()あなたは親クラスのプロパティやメソッドを調整したい 実施例3: あなたが親を転送したい名前。クラスのプロパティまたはメソッド(自己) #1 にかかわらず継承3の方法
クラスの親: テキスト = " ABC " DEF (自己)say_something: 印刷(" 何" ) クラスのSub(親): デフshow_info(自己): プリント(。スーパー()テキスト) 。スーパー()(say_something) サブ = 小() sub.show_info()
テン、ダイヤモンドの継承
任意のpython3クラスは、直接的または間接的にオブジェクトに継承され
、新しいコールにクラスから継承する任意の明示的または暗黙的なオブジェクトクラス、新しいクラスのすべての新しいカテゴリでのpython3を
、Objectのサブクラスでもない:クラシックpython2はにのみ表示されます
:ダイヤモンド継承する場合がある場合python2古典的な広さを見つけるために、共通の親クラスに直面したときに、新しいクラス、深さ優先最初は、深さ優先で維持することである場合のpython3