この記事では、Pythonの継承について解説していきます。
オブジェクト指向プログラミング(OOP)において、継承とは、あるクラスが他のクラスのプロパティを継承・拡張できる仕組みのことを指します。
この特性により、派生クラスは基底クラスの特性や特徴を獲得することができます。
継承は、コードの再利用性を高め、コードの信頼性を向上させるため、OOPの最も重要な側面の1つと考えられています。
継承を使うメリット
まずは、継承を使うメリットを紹介していきます。
- 継承は、実世界のシナリオに近い関係を描く。
- また、派生したクラスに手を加えることなく、より多くの機能を追加できる再利用性という特徴も備えています。
-
例えば、あるクラスYがクラスXを継承している場合、Yのサブクラスは自動的にクラスXを継承することになります。
継承の基本用語
- サブクラス/派生クラス : 他のクラス(通常は基底クラス)の特性を継承するクラスです。
- スーパークラス/ベースクラス : 他のサブクラスが派生するクラス。
-
派生クラスは、通常、基底クラスを継承し、継承され、拡張されます。
Pythonの継承構文
classSuperClassName:
Body of Super class
classDerivedClass_Name(SuperClass):
Body of derived class
Pythonの継承の例
簡単な例でPythonの継承の世界に飛び込んでみましょう。
ステップ1:ベースクラスの作成
class Father:
def __init__(self, name, lastname):
self.name = name
self.lastname = lastname
def printname(self):
print(self.name, self.lastname)
x = Father("Anees","Mulani")
x.printname()
キーワード ‘self’ はクラスのインスタンスを表すために使われます。
selfキーワードを使うことで、pythonではクラスの属性やメソッドにアクセスします。
メソッド__init__
はオブジェクト指向の用語でコンストラクタと呼ばれます。
このメソッドはクラスからオブジェクトが生成される際に呼び出されます。
このメソッドは、クラスからオブジェクトが生成されるときに呼び出されます。
これにより、クラスの属性を初期化することができます。
結果は、以下の通りになります。
Anees Mulani
ステップ2: 派生クラスの作成
class Father:
def __init__(self, name, lastname):
self.name = name
self.lastname = lastname
def printname(self):
print(self.name, self.lastname)
class Son(Father):
def __init__(self, name, lastname):
Father.__init__(self, name, lastname)
x = Son("Dev","Bajaj")
x.printname()
結果は、以下の通りになります。
Dev Bajaj
super()関数の使用
super()
関数を使うと、親要素の名前を使わなくても、自動的にその親要素からメソッドやプロパティを継承します。
class Father:
def __init__(self, name, lastname):
self.name = name
self.lastname = lastname
def printname(self):
print(self.name, self.lastname)
class Son(Father):
def __init__(self, name, lastname):
super().__init__(name, lastname)
x = Son("Dev","Bajaj")
x.printname()
結果は、以下の通りになります。
Dev Bajaj