Python チュートリアル-クラスの継承

胡金庫 2023年1月30日
  1. Python クラス継承メソッドのオーバーライド
  2. Python クラスの多重継承
  3. Python クラスのマルチレベル継承
Python チュートリアル-クラスの継承

このセクションでは、Python オブジェクト指向プログラミングの継承について学びます。

継承では、子クラスは親クラスから作成されます。子クラスは、親クラスからすべて(データメンバーとメンバー関数)を継承します。

Python の継承の構文は次のとおりです。

class ParentClass:
    # members


class ChildClass(ParentClass):
    # members

子クラスには、親クラスのすべての機能があり、新しい機能を追加することもできます。

以下の例のように、それは Auto という名前の親クラスを持ち、子クラス car はそれから継承されます。

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
Name of Auto:  Prius
Engine of auto:  1.5l

ここでは、Auto クラスのメソッドを Car クラスで使用できることがわかります。これは、CarAuto から継承されているためです。

Car のコンストラクター内で、Auto のコンストラクターが呼び出されます。Car のオブジェクトを使用して、Auto のすべてのメソッドを呼び出すことができます。

Python クラス継承メソッドのオーバーライド

メソッドのオーバーライドは、子クラスと親クラスの両方に同じメソッドがある場合です。メソッドのオーバーライドは、基本的に、子クラスが親クラスのメソッドの実装を変更する概念です。

子クラス CarAuto クラスと同じ display メソッドを持っているが、実装が変更されている例を考えてみましょう。

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)
    def display(self):
		print("You are in child class")

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
You are in child class

そのため、オブジェクト c で表示メソッドが呼び出されると、子クラスのメソッドが呼び出されます。

Python クラスの多重継承

子クラスに複数の親クラスがある場合、多重継承が発生します。各親クラスの機能は、子クラスに継承されます。

以下は、多重継承の構文です。

class A:
    # members


class B:
    # members


class child(A, B):
    # members

例:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B:
	def dispB(self):
		print('You are in class B')

		
>>> class C(A, B):
	def dispC(self):
		print('You are in class C')

>>> Cobj = C()
>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

C(子クラス)のオブジェクトは、親クラス AB のメソッドを呼び出すことができることに注意してください。したがって、C は AB のすべてを継承すると言うことができます。

Python クラスのマルチレベル継承

マルチレベル継承は、別の子クラスから子クラスを継承する場合です。

マルチレベル継承の構文は次のとおりです。

class A:
    # members


class B(A):
    # members


class C(B):
    # members

例:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B(A):
	def dispB(self):
		print('You are in class B')

		
>>> class C(B):
	def dispC(self):
		print('You are in class C')
        
>>> Cobj = C()

>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

ここで、C クラスがその親クラスと祖父母クラスのメソッドを呼び出すことができることがわかります。

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook