この記事を読むことで、Pythonのクラスが「脳にダイレクトに衝撃を与えながら記憶に残って定着して使いこなせる」様になります。
と、申すのも、Pythonでのクラス学習に教材として、故・志村けんさんが歌う「ウンジャラゲ」を使って学んでいくからです。
この記事ではPythonを学んでクラスまで辿り着いた昭和生まれのミドル世代中高年の方々に、どこまでも優しい記事を心がけて書いておりますが、Pythonのクラスを勉強中の平成・令和生まれの方も宜しかったらお立ち寄り下さい。内包表記も使っているので、ループの学習中の方もどうぞご覧下さい。
プログラミング初心者で、子どもの頃にTV で「志村けんさん」のギャグを見て笑っていた昭和の方々を対象にしていますが、若い方でも志村けんさんをご存知の方は大勢いらっしゃると思います。
プログラミングを学んでいる私のような年配の方で、若い方から学ぶのはチョット・・・とためらいのある方は、こちらの記事と併せて、クラスよりももっと前の基礎文法も扱っている当ブログのPython自作サンプル集もご覧下さいませ。
関連記事(ループで「僕は死にましぇ〜〜ん」・「同情すんなら金をくれ!!」):Pythonでループの基礎と2つずつ増加、ドラマの名台詞を表示、「同情すんなら金をくれ!!!!」
サイトマップはこちらから
Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介
Pythonの進捗状況(私のロードマップ)
クラス=設計図
インスタンス=クラスという設計図から作られた「具体的な」製品
というと、なんだか小難しい感じがするので、
クラス=志村けんさんの「ウンジャラゲ」を例にして、「何」曜日は「ナニナニナニ♪」といったフォーマット
インスタンス=そのフォーマットから作った、「月曜日はウンジャラゲ」、「火曜日はハンジャラゲ」・・・「日曜日はランラランらランランっ!」と言った「具体的な」各曜日ごとの踊り
という認識でコードを書いています。
下記の動画は、今回学ぶ「Pythonのクラスの基礎の基礎」の教材として使っているので、お忙しい方も出来れば「最初の1分程度まで(日曜日まで)」を先に見ておいて頂けると、楽しみながらPythonのクラスの理解が深まると思います。
(動画右下の歯車マークから再生スピードを2倍速にすると、余計に笑えるかも知れませんヨ!)
では、いよいよプログラムを詳しく見ていきます。
最初に志村けんさんのセリフとBGMを出力するコードです。
これはシンプルなprint文です。
#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('・・・BGM・・・\n')
ポイントと言っても、4行目のprint文で改行の「バックスラッシュn」を使っている所ぐらいでしょうか。「バックスラッシュ」はMacをお使いの方は【option】+【¥】で表示されます。Windowsの方はこちらをご参照ください。
では、クラスJarageを作って行きます。
まずは、インスタンス化する時に自動的に最初に呼ばれるコンストラクタの部分です。
簡単に書くと、初期化するメソッド(関数)です。
初期化 → 月曜日 → 初期化 → 火曜日 → 初期化 → 水曜日・・・
という具合に呼び出されるので、必ず初期化が必要です。
#クラスJarage
class Jarage:
#コンストラクタで初期化している。
def __init__(self,week,spell):
self.week=week
self.spell=spell
selfというのは、呼ばれた月曜日、火曜日・・・の各曜日自体のことです。
weekに曜日を、spellに「ウンジャラゲ」、「ハンジャラゲ」といった呪文(!?)を引数にしています。
クラスで使うメソッド(関数)には「self」が必要です!!
次は、「何曜日」が「ナンジャラゲ」になるのか出力するsongメソッドです。
#何曜日は何ジャラゲかを出力するsongメソッド
def song(self):
print(self.week+'曜日は、'+self.spell)
一旦ここまでのクラスJarageのコードをまとめます。
#クラスJarage
class Jarage:
#コンストラクタで初期化している。
def __init__(self,week,spell):
self.week=week
self.spell=spell
#何曜日は何ジャラゲかを出力するsongメソッド
def song(self):
print(self.week+'曜日は、'+self.spell)
クラスの中にあるsongメソッドを使うのに、
mon=Jarage(‘月’,’ウンジャラゲ’)
とすると、月曜日はウンジャラゲ、と入るようにします。
変数self.weekに「月(曜日)」、変数self.spellに「ウンジャラゲ(呪文)」が入り、これをリストを使って、各曜日用意します。
次に、月曜日から日曜日までインスタンス化する処理です。
#曜日とその呪文のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')
この後、各曜日を格納するリストeverydayを、各曜日の英語略で作ります。
everyday=[mon,tue,wed,thu,fri,sta,sun]
このリストeverydayをループを使って順々にインスタンス化していくコードです。
#ループを使って各曜日のインスタンス化を行う
for day in everyday:
day.song()
このループの部分を内包表記で書くと、ループのコードが1行にシンプルに記述出来ました。
#内包表記で各曜日のインスタンス化のループを作る
[day.song() for day in everyday]
内包表記の公式
[結果 for〜(いつものFor文)]
では、クラスJarageの中のsongメソッドをループで呼び出して各曜日表示します。
これまでのコードに出力文「だいじょぶだぁ」などを加えたコードと、実行結果です。
#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('・・・BGM・・・\n')
#クラスJarage
class Jarage:
#コンストラクタで初期化している。
def __init__(self,week,spell):
self.week=week
self.spell=spell
#何曜日は何ジャラゲかを出力するsongメソッド
def song(self):
print(self.week+'曜日は、'+self.spell)
#曜日とその呪文のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランのランっ!')
#曜日のリスト
everyday=[mon,tue,wed,thu,fri,sta,sun]
#内包表記で各曜日のインスタンス化のループを作る
[day.song() for day in everyday]
print('\n志村けん:「だいじょぶだぁ!!」')
print('-------------------------------------------\n')
わざわざクラスなんて「しちめんどくさい」ことしないで、そのままコピペの方が良くね?と思われるかもしれませんし、私もそんなこと考えなくもないですが。
いかんいかん、プログラミングを勉強する者としては!!
そこで、最後に「猫曜日はうんにゃにゃんにゃんにゃん(=^x^=)っm」を加えることにします。
これはリストeverydayに「cat」を追加して、「猫(猫曜日の猫)」、「うんにゃにゃんにゃんにゃん(=^x^=)っm」と引数を2つ指定したオブジェクトを作れば良いだけなので、簡単に改造できそうですね。
追加したコードです。
#猫曜日を追加
cat=Jarage('猫','んにゃにゃにゃにゃんにゃん(=^x^=)mm!')
#曜日リストの末尾に「cat」を追加
everyday=[mon,tue,wed,thu,fri,sta,sun,cat]
追加の実行結果です。
はい、これで無事に「猫曜日」が追加されました!!
・・・いったい自分は何をしているんだろう…。という気にもなりましたが、昭和のギャグも令和でのプログラミングの勉強に繋がっていたってことで。
それではこの追加のコードを含めて、ここまでの全コードを掲載します。
#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('・・・BGM・・・\n')
#クラスJarage
class Jarage:
#コンストラクタで初期化している。
def __init__(self,week,spell):
self.week=week
self.spell=spell
#何曜日は何ジャラゲかを出力するsongメソッド
def song(self):
print(self.week+'曜日は、'+self.spell)
#曜日とその呪文のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')
#猫曜日を追加
cat=Jarage('猫','んにゃにゃにゃにゃんにゃん(=^x^=)mm!')
#曜日リストの末尾に「cat」を追加
everyday=[mon,tue,wed,thu,fri,sta,sun,cat]
#内包表記で各曜日のインスタンス化のループを作る
[day.song() for day in everyday]
print('\n志村けん:「だいじょぶだぁ!!」')
print('-------------------------------------------\n')
今回教材に使った曲は、「植木等 ハナ肇とクレイジー・キャッツの曲」だそうです。
実は、ハナ肇さんは大学の先輩なんです。
最後まで読んでくださって、ありがとうございます。
あなたを愛しています(=^x^=)
■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。
Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。
サイトマップはこちらから
Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介
Pythonの進捗状況(私のロードマップ)