Pythonでの継承の種類| Pythonの継承[例付き]

公開: 2021-02-09

目次

序章

クリーンなコードを求める闘いは、すべてのプログラマーが参加する戦いです。 そして、その戦いは、オブジェクト指向プログラミングの概念の適切な鎧で征服することができます。 また、OOPの概念を適切に利用することで、コードの再利用性、可読性、最適な時間とスペースの複雑さを改善できます。

Pythonでのコーディングはとても楽しいです。 膨大な数のライブラリサポートがあり、オブジェクト指向のGUIプログラム可能性により、すべてのプログラミング言語の中でホットケーキになっています。

継承は最も利用されているオブジェクト指向機能の1つであり、Pythonでの継承は熱心な作業です。 それでは、今から始めましょう!

まず最初に、継承の定義を理解しましょう。

継承

継承は、別のクラスのプロパティと特性(変数とメソッド)を取得するプロセスです。 この階層順に、別のクラスを継承するクラスをサブクラスまたは子クラスと呼び、他のクラスを親クラスとします。

継承は、従う階層と、関係する親クラスおよびサブクラスの数に基づいて分類されます。

継承には次の5つのタイプがあります。

  1. 単一継承
  2. 多重継承
  3. マルチレベルの継承
  4. 階層的継承
  5. ハイブリッド継承

単一継承

このタイプの継承により、サブクラスまたは派生クラスが親クラスのプロパティと特性を継承できるようになります。これにより、コードの重複が回避され、コードの再利用性が向上します。

#親クラス
上記のクラス
i = 5
def fun1 (自己):
print( "ねえ、あなたは親クラスにいます"

#subclass
のクラス(上):
i = 10
def fun2 (自己):
print( "ねえ、あなたはサブクラスにいます"

temp1 = Below()
temp2 = above()
temp1.fun1()
temp1.fun2()
temp2.​​fun1()
print(temp1.i)
print(temp2.​​i)
#temp2.​​fun2()

さて、上記のコードを見ていきましょう。

上記のコードでは、「Above」は親クラスであり、「Below」は親クラスを継承する子クラスです。 Pythonで継承を実装するのは簡単な作業です。子クラスの括弧内に、親クラス名を指定するだけです。 親クラスと子クラスの両方のオブジェクトを作成していますが、継承について興味深い点があります。 子クラスは親クラスのメソッドと変数にアクセスできますが、その逆は当てはまりません。

したがって、上記のコードでは、temp1オブジェクトはfun1メソッドとfun2メソッドの両方にアクセスできますが、temp2オブジェクトはfun1メソッドにのみアクセスできます。 同様に、同じルールがコード内の変数に適用されます。 また、親クラスオブジェクトから子クラスのメソッドまたは変数にアクセスすると、エラーがスローされます。 コードの最後の行がコメント化されていない場合、エラーが発生します。

多重継承

この継承により、子クラスは複数の親クラスから継承できます。 このタイプの継承はJavaクラスではサポートされていませんが、Pythonはこの種の継承をサポートしています。 異なるクラスから複数の特性を収集する必要がある場合、これには大きな利点があります。

#親クラス1
クラスA
demo1 = 0
def fun1 (自己):
print(self.demo1)

#親クラス2
クラスB
demo2 = 0
def fun2 (自己):
print(self.demo2)

#子クラス
クラスC (A、B):
def fun3 (自己):
print( 「ねえ、あなたは子クラスにいます」

#メインコード
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( “最初の番号は:“ 、c.demo1)
print( “ 2番目の数字は:“ 、c.demo2)

上記のコードでは、2つの親クラス「A」、「B」を作成しました。 Pythonの継承の構文に従って、クラス「A」と「B」の両方を継承する子クラスを作成しました。 子クラスが親クラスのメソッドと変数にアクセスできることを前述したように、子クラス「C」はその親クラスのメソッドにアクセスできます。

マルチレベルの継承

マルチレベル継承では、特性のプロパティの転送は、階層的に複数のクラスに行われます。 より良い視覚化を得るために、それを祖先と孫の関係、または複数のレベルを持つツリーのルートとリーフと見なすことができます。

#親クラス1
クラス車両
def機能(自己):
print( 「車両は輸送に使用されます」

#子クラス1
クラスカー(車両):
デフホイール(自己):
print( 「車には4つの車輪があります」

#子クラス2
クラスelectrical_car (車):
defスペシャリティ(自己):
print( 「電気自動車は電気で走る」

electric = electric_car()
electric.speciality()
electric.wheels()
electric.functioning()

上記のコードをドライランして、クラス「車両」を作成し、次にクラス車両を継承するクラスカーを作成しました。 これで、「車両」は親クラスになり、「車」は子クラスになります。 後で「electric_car」クラスを作成しました。現在、carクラスは親クラスで、electric_carクラスは子クラスであり、Vehicleクラスとelectric_carクラスの関係はマルチレベルの継承です。

ここで、electric_carクラスは、車両と車の両方のクラスのメソッド、変数にアクセスできますが、車のクラスは、車両クラスのメソッド、変数にのみアクセスできます。 また、説明したように、親クラスの車両は子クラスのメソッドにアクセスできません。

階層的継承

この継承により、クラスは複数の子クラスまたはサブクラスの親クラスとしてホストできます。 これにより、メソッドの機能を複数の子クラスと共有できるという利点があり、コードの重複を回避できます。

#親クラス
クラス
def fun1 (自己):
print( "ねえ、あなたは親クラスにいます"

#子クラス1
クラスchild1 (親):
def fun2 (自己):
print( “ねえ、あなたは子クラス1にいます”

#子クラス2
クラスchild2 (親):
def fun3 (自己):
print( “ねえ、あなたは子クラス2にいます”

#子クラス3
クラスchild3 (親):
def fun4 (自己):
print( 「ねえ、あなたは子供クラス3にいます」

#メインプログラム
child_obj1 = child3()
child_obj2 = child2()
child_obj3 = child1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

上記のコードでは、単一の親クラスと、同じ親クラスを継承する複数の子クラスがあります。 これで、すべての子クラスが親クラスのメソッドと変数にアクセスできるようになりました。 「Parent」クラスと、同じ親クラス「Parent」を継承する3つの子クラス「child1」、「child2」、「child3」を作成しました。

チェックアウト: Pythonオープンソースプロジェクトのアイデア

ハイブリッド継承

同じコードに複数のタイプの継承が実装されている場合、継承はハイブリッド継承と呼ばれます。 この機能により、ユーザーは継承の機能を最大限に活用できます。 これは、実装で多重継承を必要とするコードを実装するという要件を満たします。

クラスA:
def fun1(self):
print( "Hey there、you are in class A")class B(A):
def fun2(self):
print( "Hey there、you are in class B")class C(A):
def fun3(self):
print( "Hey there、you are in class C")class D(C、A):#line 13
def fun4(self):
print( "Hey there、you are in the class D")#main program
ref = D()
ref.fun4()
ref.fun3()
ref.fun1()

上記のコードでは、複数のタイプの継承を実装していることがわかります。 クラスA、B、Cは階層継承を実装し、クラスA、C、Dはマルチレベル継承を実装します。 いいえ、これらの個々の継承には、親クラスのメソッドと変数にアクセスするという個々のプロパティがあります。 また、注意点があります。

マルチレベルの継承を実装する場合、「child_class(parent_class1、parent_class2)」のような構文に従います。 ただし、「parent_class1」が「parent_class2」より階層的に上にある場合、この構文はエラーをスローします。 この構文を実装する場合、「parent_class1」は「parent_class2」よりも階層的に低いレベルにある必要があります。 たとえば、上記のコードで、13行目に構文クラスD(A、C)がある場合、クラスCはクラスAよりも階層的に低いため、コードは機能しません。

世界のトップ大学からデータサイエンスコース学びましょうエグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

読む: Pythonプロジェクトのアイデアとトピック

結論

継承の使用法とニーズを確認し、継承の定義を理解しました。 また、継承の種類を確認し、実装コードと各種類の継承の説明を確認しました。 さまざまなタイプの継承でアクセスする変数とメソッドのルールを理解しました。

Pythonでさまざまな種類の継承を認識したので、それらを実装して、コードで利用してみてください。 継承を適切に利用してコードを最適化してみてください。

データサイエンスについて知りたい場合は、IIIT-BとupGradのデータサイエンスのPGディプロマをチェックしてください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップ、1- on-1業界のメンター、400時間以上の学習、トップ企業との仕事の支援。

多重継承とマルチレベル継承の違いは何ですか?

多くの初心者プログラマーは、多重継承と多重レベル継承の間で混乱することがよくあります。 以下は、これら2つのタイプの継承の重要な違いのいくつかを示しています。
多重継承-
1.子クラスがそのプロパティと特性を複数の基本クラスから継承する場合、そのようなタイプの継承は多重継承と呼ばれます。
2.多重継承は理解が非常に複雑になる可能性があるため、広く使用されていません。
3.基本クラスと派生クラスの2つのクラスレベルしかありません。
マルチレベルの継承
1.子クラスがその基本クラスからプロパティを継承し、さらに別の基本クラスからプロパティを継承して、前者を子クラスにする継承は、マルチレベル継承と呼ばれます。
2.この継承は大きな目的を果たし、したがって非常に広く使用されています。
3.少なくとも3つのクラスレベルがあります。基本クラス、中間クラス、および派生クラスです。

ハイブリッド継承について何を理解していますか?

ハイブリッド継承は、ユニークなタイプの継承です。 その名前が示すように、新しい概念を持つのではなく、2つ以上のタイプの継承の組み合わせです。 たとえば、複数レベルとマルチレベルの両方の継承を示すクラスは、ハイブリッド継承の例です。

Pythonのアクセス修飾子について何を知っていますか?

Pythonには、以下に説明する3種類のアクセス修飾子があります。
1.パブリックアクセス修飾子-クラスのパブリックメンバーは、プログラムのどの部分からでもアクセスできます。 Pythonでは、データメンバーまたはメンバー関数のアクセス指定子が指定されていない場合、デフォルトでパブリックになります。
2.保護されたアクセス修飾子-データメンバーまたはメンバー関数が保護されていると定義されている場合、そのクラスの派生クラスからのみアクセスできます。
3.プライベートアクセス修飾子-プライベートアクセス修飾子は、最も安全なアクセス指定子です。 プライベートメンバーは、それらが定義されているクラス内でのみアクセスできます。