Diagonal M

データサイエンス系長期インターンで学んだことなど

【Python】オブジェクト指向プログラミング vol.6 ~継承~

Pythonオブジェクト指向の勉強の続きです。

継承

クラスには継承という機能があり、引継ぎすることができます。

class Diagonal:
    name = 'Class Diagonal'

class M(Diagonal):
    pass

m = M()
print(m.name)

これを実行すると以下のようになります

Class Diagonal

'Class Diagonal'という文字が表示されました。Class Mには、nameの変数宣言はありません。しかし、継承することでDiagonal クラスで定義された変数にMクラスがアクセスできるようになります。

クラスの宣言のところをみると、class M(Diagonal )とクラス名の隣に括弧で別のクラス名が入っています。MクラスはDiagonal クラスを継承しますという意味で、継承されるクラス(Diagonal クラス)のことをスーパークラスといいます。

オーバーライド

親クラスのメソッドと同じメソッドを子クラスで定義することを、オーバーライドと言います。要は上書きのことです。変数も上書きできれば関数も上書きできます。

class Diagonal:
    def hello(self):
        print('Hello Diagonal')
        
class M:
    def hello(self):
        print('Hello M')

diagonal = Diagonal()
m = M()
diagonal.hello()
m.hello()

DiagonalクラスとMクラスには同じhelloという名前の関数があります。名前が重複しているため、どちらのクラスに作られたhello関数を呼びだすかを指定する必要があります。上のコードを実行すると以下のようになります。

Hello Diagonal
Hello M

まとめ

オブジェクトとは

  • IDと型と値や関数を同時に保持できる便利なデータ

オブジェクト指向

  • オブジェクトを中心にプログラムを作って分割統治する設計手法のこと

クラス

  • オブジェクトに与えるテンプレート

インスタンス

  • クラスのテンプレートの情報を持って生まれたオブジェクトのこと

継承

  • あるクラスから派生して子供のクラスを作れる
  • 継承したクラスは、継承元の情報にアクセスできる
  • 自分より上位のクラスのことをスーパークラスという