"" " 継承多型" "" __author__ = ' shaozhiqi ' #----------------- ---------------親--------- クラスアニマル(オブジェクト): DEF RUN(セルフ): 印刷(' 動物が実行されている... ' ) #-----------------サブクラス------------------------ クラス・ドッグ(動物): パス #---------------- -サブクラス---------------------------------------- クラスキャット(動物): パス #-------------------サブクラスのインスタンスを-------------------------- ----------- 犬= 犬() dog.run() #動物は...実行されている 猫 = キャット() cat.run() #の動物が実行されている... #--------------------重新定义犬有自己的実行方法------------------- クラスの犬(動物): デフ実行します(自己): プリントは、(「犬が実行されている... 」) デフ(自己)を食べます: 印刷(' 犬肉を食べる... ' ) 犬 = 犬() dog.run() #の犬が実行されている... dog.eat() #の肉を食べる犬... #ときに親クラスとそこサブクラス同じrun()メソッド、私たちが言う、サブクラスラン()のコードが実行されている場合、()の実行親クラスをカバーし、常に(実行サブクラスを呼び出します) 。 #このように、我々は、継承の別の利点を得る:多型を。 #サブクラス、それはまた、親として見ることができるデータの種類。しかし、今度は、行いません。 印刷(でisinstance(犬、犬)) #真 印刷(でisinstance(犬、動物)) #トゥルー A = アニマル() 印刷(でisinstance(A、犬)) #偽 #----アダプタ----------------------- ------------------------- ----------- DEF run_selfrun(動物): animal.run() run_selfrun(A) #の動物が実行されている... run_selfrun(犬) #の犬が実行されている... #動物新しいサブクラス、run_selfrun()は、任意の変更を必要としない、この方法は、上向きのビジネスを抽出することができ #1 、何らかの依存性を事実を動物またはメソッドのパラメータの関数として通常運転に変更せずに使用されていますその理由は、多形です。 #のクロージング原則: #はオープン拡張:動物は、新しいサブクラスを許す; #は、修正のため閉鎖:動物なし修正依存型run_selfrun()関数などが挙げられます。