【Pythonクラスの継承とメソッドのオーバーライド】HiHiJet井上瑞稀さん美 少年 浮所飛貴さんのバク宙

この記事は、Pythonでクラスの継承と、メソッドのオーバーライドを学習中の方で、HiHiJetの井上瑞稀さん又は、美 少年の浮所飛貴さんを知っている(聞いたことがある〜大ファン)か、ジャニーズさんが好きな方を対象としています。
また、ループの【内包表記】についても触れています。

親(スーパー)クラスPeopleを継承して、小クラスJohnnysを作ります。
どちらにもactionというメソッドがあり、親クラスの方のactionでは、「通勤電車に乗った」という動きを、小クラスJohnnysのactionでは「バク宙をした」という動きにします。

ループも使うので、一般的なループの書き方と【内包表記】を使ったループの書き方も掲載します。

この動画では、美 少年の浮所さんの華麗なバク宙が見られます。
浮所さんが好きな方には、目の保養になるかもしれません。

https://youtu.be/pqZeG7gQpUA

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

さて、浮所さんが動画の冒頭で「井上瑞稀さんもバク宙していた」と言っていたので、Pythonでこのようなプログラムを作りました。

「親クラスPeople」では「山田太郎」さん、「鈴木花子」さん、「田中一郎さん」という名前を引数にして、それぞれ「yamada,suzuki,tanaka」というオブジェクトを作成しています。

また、「子クラスJohnnys」では「井上瑞稀」さん、「浮所飛貴」さんという名前を引数にして、それぞれ「inoue,ukisho」というオブジェクトを作成しています。

親クラスのコンストラクタでは、「selfとname」を引数にしています。actionメソッドでは「self.nameさんは通勤電車に乗った。」という動きをプリント文で作ります。

#親クラス「People」でコンストラクタと一般人の動きを掲載
class People:
    def __init__(self,name):
        self.name=name

    def action(self):
        print('【'+self.name+'】さんは「通勤電車」に乗った。')

小クラスでは、「self.nameさんはバク宙をした!!」という動きをプリント文で作ります。

#子クラス「Johnnys」でジャニーズバク宙の動きを掲載
class Johnnys(People):
    def action(self):
        print('【'+self.name+'】さんは「バク宙」をした!!')

このように、同じ名前のメソッドを、小クラスでは親クラスとは別の動きにすることを、メソッドのオーバーライドと言います。

また、子クラスのJohnnysでは、コンストラクタはありませんが、自動的に親クラスのコンストラクタが呼ばれます。

山田太郎さん、鈴木花子さん、田中一郎さん、井上瑞稀さん、浮所飛貴さんのオブジェクトを生成するコードです。

#一般人とジャニーズのオブジェクトを作成
yamada=People('山田太郎')
suzuki=People('鈴木花子')
tanaka=People('田中一郎')
inoue=Johnnys('井上瑞稀')
ukisho=Johnnys('浮所飛貴')

上記のオブジェクトをarrayという配列に入れます。

#オブジェクトを配列に格納
array=[yamada,suzuki,tanaka,inoue,ukisho]

この配列をループで取り出して、メソッドactionを呼ぶことによって、下記の実行結果を得られます。
ループのコードと、実行結果です。

#ループで各オブジェクとを動かしてみる
for man in array:
    man.action()

また、上記のループを内包表記で書いた場合のコードです。

#上記ループの内包表記
[man.action() for man in array]    

このように、内包表記では1行で書き現すことが出来ました。

ここまでのコードを全て掲載します。

#親クラス「People」でコンストラクタと一般人の動きを掲載
class People:
    def __init__(self,name):
        self.name=name

    def action(self):
        print('【'+self.name+'】さんは「通勤電車」に乗った。')


#子クラス「Johnnys」でジャニーズバク宙の動きを掲載
class Johnnys(People):
    def action(self):
        print('【'+self.name+'】さんは「バク宙」をした!!')


#一般人とジャニーズのオブジェクトを生成
yamada=People('山田太郎')
suzuki=People('鈴木花子')
tanaka=People('田中一郎')
inoue=Johnnys('井上瑞稀')
ukisho=Johnnys('浮所飛貴')


#オブジェクトを配列に格納
array=[yamada,suzuki,tanaka,inoue,ukisho]


#ループで各オブジェクとを動かしてみる
for man in array:
    man.action()

#上記ループの内包表記
[man.action() for man in array]    

(通常のループか、内包表記のどちらかをコメントアウトしないと、2回出力されてしまいます。)

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)