【Python学習用(初学者向け)】Python Class(クラス)の継承

learning programmingPython

こちらの記事では、

Python Class(クラス)の継承

について説明しています

内容としては初学者向けの内容となります

こんな方は必見です
  • クラス 継承 とはよく聞くがなんのことかわからない
  • クラスを習い始めたばかりでどんなときに使えるのかわからない
  • フレームワークを学習したいがフレームワークのどんなところが良いのか知りたい
この記事でわかること
  • クラス継承とはなにか
  • クラス継承のやり方
  • クラス継承のメリット、どんなときに使えるのか

クラスの継承とは?

クラスの継承とは、

既存のクラスに自分なりの新しい属性やメソッドを加えていくことができる

とても便利な方法です

建築に例えると、

一から建物を立てていくのではなく、自分の理想に近い既存の建物をリフォームしていく、

といったイメージでしょうか??

クラスの骨組みや属性は好きなように残し、上書き、そして新しいものを追加することができるとても便利な方法になります

クラス継承のやり方

ここでは、

元となるUserクラスを定義し、追加の属性を加えた新たなProfileクラスを作り、やり方を見ていきます

Userクラス(元となるクラスの定義)

class User():
    def __init__(self, email, password):
        self.email = email
        self.password=password

Userクラスには、emailとpassword属性がセットされています

>>> user = User(email="contact@itc.tokyo", password="abc")
>>> print(user.email)

【出力結果】

contact@itc.tokyo

これがUserクラスです

Profileクラスを作成する(Userを継承する)

ただの継承

まずは、ただ継承だけしてみましょう

class Profile(User):
    pass

passと入力したにもかかわらず、Userと同じ属性が存在します

>>> profile = Profile(email="yu@itc.tokyo", password="password")
>>> print(profile.email)

【出力結果】

yu@itc.tokyo

ProfileクラスでUserクラスの属性「email」が使えましたね!

これが継承です

継承し、属性を追加

class Profile(User):
    def __init__(self, email, password, lastname, firstname):
        super().__init__(email, password)
        self.lastname = lastname
        self.firstname = firstname

いくつか説明を加えます

super().__init__(email. password)

という部分で、

継承元のUserクラスの属性に値を代入し、継承しています

継承元のクラスは必ずsuper()となります

追加の属性として、

lastname、firstname

を足しています

オブジェクトを作り、値を入れてみます

>>> profile2 = Profile(email="test@itc.tokyo", password="testpassword", lastname="Yu", firstname="likepython")
>>> print("email: ", profile2.email, "& lastname: ", profile2.lastname)

【出力結果】

email:  test@itc.tokyo & lastname:  Yu

Userクラスの属性「email」だけでなく、Profileクラスで追加した属性「lastname」もしっかりと出力されていますね!

メソッドも追加

class Profile(User):
    def __init__(self, email, password, lastname, firstname):
        super().__init__(email, password)
        self.lastname = lastname
        self.firstname = firstname
        
    def get_fullname(self):
        return self.lastname + ' ' + self.firstname

フルネームを記述する「get_fullname()」関数を定義しました

>>> profile3 = Profile(email="fullname@itc.tokyo", password="fullpassword", lastname="itc", firstname="tokyo")
>>> print(profile3.get_fullname())

【出力結果】

itc tokyo

Profileクラスには新たなメソッドも追加されています!

まとめ クラス継承のメリット

以上、クラス継承について解説させていただきました

一番最初に勉強したときは、訳もわからず、「??」と読み飛ばしていたくらいです 笑

が、今となっては、

めちゃめちゃ使っています!

というのは、Djangoなどのフレームワークを利用していると、

標準で準備されているクラスを継承して

属性やメソッドを上書き、追加、の繰り返しです

とても優秀なプログラマーの方々が汎用的に使えるようにと定めたフレームワークや備え付けのクラスを利用することで、一から書く手間も時間も圧倒的に少なくなります

過去の色々な方々の努力の結晶を活用させて頂き、さらに進化させていく、

これが継承の真骨頂です!

ぜひここでマスターして色々なものにチャレンジしていきましょう!

本日もありがとうございました!

タイトルとURLをコピーしました