I.はじめに
1、相続の新しい種類を構築し、基本クラスまたはスーパークラスと呼ばれることができるクラスへの道、親クラスの下で、新しいクラスはサブクラスは親クラスのプロパティを継承することができ、サブクラスまたは派生クラスを呼び出すことができます。
図2に示すように、親クラスはサブクラスによって継承されてもよい、サブクラスは、親クラスの複数を継承できます。
3は、のpython3で、最も高い上位クラスは組み込みのオブジェクトクラスのデフォルトを継承します。
4は、python2で、最高の祖先クラスが継承デフォルト、この時、クラスとその子孫クラスは、古典的なクラスですません。明示的に最高の祖先の親クラスがある場合を除き、組み込みのオブジェクト、つまりクラスとその子孫は、クラスに新しいクラスです。
クラスGreatGrandfather: X = 111 クラスの祖父(GreatGrandfather): パス クラスの父(祖父): パス クラス息子(父): パス son_obj_1 = ソン() 印刷(。GreatGrandfather __bases__) #のpython3結果に(<クラス'オブジェクト'>、 )python2結果() プリント(son_obj_1.x) プリント(Son.x) プリント(Father.x) プリント(Grandfather.x) #上記の結果は111
第二に、多重継承:サブクラスの継承つ以上の親クラス
1、の利点:サブクラスは、各親クラスのプロパティを使用するコードの利用を改善することができます
2.短所:
①論理的思考から、この子は、それ自体が「カテゴリ」は不鮮明になってきた定義クラスに属します。
読みやすさと拡張性②さらに悪いコード、それはにつながる可能性があり、「ダイヤモンドの問題。」
3、必然的に多重継承の方法を使用する必要があれば、必要があるミックスインの方法。
第三に、解決の継承コードの冗長性
クラス従業員: 性別 = 「MALE 」 #サブクラス総データ属性 DEF __init__を(自己、名前、年齢): #共通のサブクラスのオブジェクトインスタンスの属性 self.name = 名前 self.ageを = 年齢 DEF SHOW_NAME(セルフ): #サブクラス機能があります 印刷(「{これは、スタッフ}である」.format(self.name)) クラス:労働者(従業員) DEFの:work_time(セルフ、タイム) #労働者サブクラス固有の特徴 を印刷(" 次のように今日の時間{}を: } { ' .format(self.name、時間)) クラスマネージャ(従業員): DEF __init__ (セルフ、名前、年齢、スキル): 。従業員__init__(セルフ、名前、年齢) #サブクラスManagerオブジェクトのインスタンス、親が直接参照を持っている場合 self.skill =スキル #の親ではありません、その後、定義可能な DEFの work_target(自己、ターゲット): #マネージャサブクラス固有の特徴 を印刷(' {}月の指標:{} ' .format(self.name、ターゲット)) worker_obj_1 =ワーカー(' トム'、' 18である' ) worker_obj_1.show_name() worker_obj_1.work_time(' 8H ') Manager_obj_1 =マネージャー(' 1月'、' 20 '、' ダンス' ) manager_obj_1.show_name() manager_obj_1.work_target(' 10李' ) #の結果 '' ' これは、従業員のトムある 仕事にトムは今日:8H これはスタッフであります1月 1月の指標今月:10億 「」 '
第四に、プロパティの検索順序
1、単一継承の場合:それは直線的な関係であるので、単に大に小さな見つけることができ年功序列に従ってください。
2、多重継承の状況: