Pythonのレッスン17(オブジェクト指向の基礎)>>> マインドマップ >>> 2人の若者で
何を継承していますか?
継承は、2つのオブジェクト間の関係が記載されているとの関係何
例えばマクダル、ページは、たてがみ毛、朱である
クラス間の継承関係に記載の手順で
、例えば連続bは、この方法は、直接使用することができ、およびb既存のプロパティ
と呼ばれるサブクラスは、Bは親クラスと呼ばれ、また、基本クラスと呼ばれます
なぜ使用の継承
当事者が直接当事者がいくつかあり継承を使用することができます継承され
、既存のコードを再利用するように設計されて再利用性を改善されました
継承を使用する方法
文法
クラスのクラス名(親クラスの名前): クラスの内容 #、Pythonでサブクラスは、同時に複数の親クラスを継承することができます
抽象
特に、読み取ることができない、それは不鮮明であり、明確ではないがない サブクラスの複数の同一の部分を抽出し、新しいクラス、また、抽象化のプロセスとして知られるプロセスで形成する 正しい使用継承: 1 。最初の抽象継承で 2.本来の機能を拡張または変更、既存のクラスを継承しました
物件検索順序
クラスA: テキスト = " 母" クラスB(A): テキスト = " heihei " 通過 bは = B() b.text = " 西渓" プリント(b.text)
オブジェクト自体 - >クラスは - >親クラスの親 - - >親を検索する>オブジェクト
派生
異なるコンテンツサブクラスを持つ親クラスがある場合、このサブクラスには、派生クラスが呼ばれ
、両方が通常クラスを派生され、通常、サブクラスは、いくつかの新しいコードを記述しますされ、そして親は正確に同じにすることはできません
そう派生クラスは、サブクラスを指し
網羅
また、オーバーライドを書き換えるために呼ば
サブクラスは親クラスのname属性の方法やと完全に一致したときに表示されます
運動:制限要素は、容器の種類を達成することができる(辞書、リスト、タプル、設定、文字列)
MYLISTクラス(リスト): DEF __init __(自己、ELEMENT_TYPE): スーパー().__のinit __() self.element_type = ELEMENT_TYPE アペンド(セルフ、オブジェクト)DEF: タイプ(オブジェクト)のIF == self.element_type: 私たちはここに必要とする#実記憶操作を行うために、親クラスのアペンド機能にアクセスする スーパー(MYLIST、セルフ).append(オブジェクト) 他: 印刷(「SIR申し訳ありませんが、タイプのあなたは要素ではありません%のSは」%self.element_type)# を格納するのに指定されている作成要素型 メートル=マイリスト(INT) #あなたが需要を持っているとき、あなたは、オブジェクトの初期化メソッドを作成するとき、それはある事をどうするかを考える必要がある m.appendを(1) 印刷(M [0]) 」m.append( 121212「)
親クラスのコンテンツへのアクセスをサブクラス化
文法
。モード1: スーパー(現在のクラス名、自己)あなたは親クラスのプロパティやメソッドを調整したい。 マナー2: スーパー()あなたは親クラスのプロパティやメソッドを調整したい 実施例3: あなたが親を転送したい名前。クラスのプロパティまたはメソッド(自己) #1 にかかわらず継承3の方法
彼は再び強調強調しました:
既存のクラスを継承し、あなたが親クラスのinitメソッドをオーバーライドするときは、必要なパラメータの親クラスに渡して、初期化メソッドの最初の行の親クラスの初期化メソッドを呼び出す必要があります
組み合わせ
これは、2つのオブジェクト間の関係があるものが何であるかを説明し、また関係で
、ゲームのキャラクターは、いくつかの機器持っている学生が携帯電話を持っている、例えば、
(両方とも何の何の)別のオブジェクトのプロパティなどのオブジェクトを、
目的の組み合わせ
しかし、また、既存のコードを再利用するため
、継承を使用している場合:最後に、それはありませんが、二つのクラス間の関係を分析:どのような関係は何である
の組み合わせを使用するときは、次の2つのクラスの間には有意な関係が存在しない場合は、同じに属していない
追加的な組み合わせ比較連続、結合度が低いです
ダイヤモンドの継承
まず、明確なPythonのサポート多重継承
追加:新しいスタイルのクラスとクラシック
任意のpython3クラスは、直接的または間接的にオブジェクト継承されていない
、新しいクラス、明示的または暗黙的なオブジェクトが呼び出された新しいクラスへのクラスから継承するすべての新しいクラスのpython3
、クラシック、どちらもObjectのサブクラスpython2はにのみ現れる
幅の上の共通の親クラスに直面したとき、ダイヤモンドの継承、新しいクラス、第1の深さがある場合には、
古典的な、深さ優先であります
終わり