この記事を読むことで、
・9人組ガールズグループ「NiziU」を通してPythonのクラスの初歩的なコードが書けるようになる
・改行の仕方の復習
・内包表記を使ったループの復習
の概要が掴めます。
クラス=設計図
インスタンス=クラスという設計図から作られた「具体的な」製品
と説明をすると、なんだか小難しい感じがするので、
クラス… NiziUの【名前】、【メンバーカラー】といったフォーマット
インスタンス… そのフォーマットから作った、MAKO; RIO; MAYA; RIKU; AYAKA; MAYUKA; RIMA; MIIHI; NINA
のメンバーごとの名前やメンバーカラーなど
と捉えると少し分かりやすくなるかもしれないです。
(ファンの愛称は、WithUという様です。)
クラスNiziUは、「名前」・「メンバーカラー」を持つ設計図です。
この設計図から作られた具体的なメンバーの、
「名前:MAKO , カラー:オレンジ」,
「名前:RIO , カラー:水色」,
「名前:MAYA , カラー:紫」,
「名前:RIKU , カラー:黄色」,
「名前:AYAKA , カラー:白」,
「名前:MAYUKA , カラー:薄緑」,
「名前:RIMA , カラー:赤」,
「名前:MIIHI , カラー:ピンク」,
「名前:NINA , カラー:青」
といった、クラスから作られた、「具体的なメンバーと担当カラー」をインスタンスとします。
まず、クラスのコードの説明をします。
initは、最初に自動的に呼ばれるメソッド(関数のこと。クラスでは関数をメソッドと呼びます)で、引数の「self」とは、MAKOさん、RIOさん、MAYAさん、RIKUさん、AYAKAさん、MAYUKAさん、RIMAさん、MIIHIさん、NINAさんといった、具体的なメンバー自身のことです。
initが呼ばれた後に、profile (プロフィール)というメソッドが呼び出され、ここで各メンバーの名前・担当カラーの紹介が出力されます。
class NiziU:
def __init__(self,name,color):
self.name=name
self.color=color
def profile(self):
print('名前:【'+self.name+('】, カラー:【'+self.color+'】'))
次に、各メンバーを格納するリストmemberと、クラスNiziUからインスタンス化(実例化)した作られたオブジェクト(MAKOさん、RIOさん、MAYAさん、RIKUさん、AYAKAさん、MAYUKAさん、RIMAさん、MIIHIさん、NINAさん)をリストにappendを使って追加するコードです。
ここでは、memberというリストに追加しています
#メンバーリストの定義とインスタンス化
member=[]
member.append(NiziU('MAKO ','オレンジ'))
member.append(NiziU('RIO ','水色 '))
member.append(NiziU('MAYA ','紫 '))
member.append(NiziU('RIKU ','黄色 '))
member.append(NiziU('AYAKA ','白 '))
member.append(NiziU('MAYUKA','薄緑 '))
member.append(NiziU('RIMA ','赤 '))
member.append(NiziU('MIIHI ','ピンク '))
member.append(NiziU('NINA ','青 '))
リストをループで取り出して、プロフィールメソッドを呼び出すコードです。
#基本的なループでメソッドを呼び出す
for oshi in member:
oshi.profile()
この部分を内包表記で書くと、
#内包表記を使用
[oshi.profile() for oshi in member]
このように1行で書けます。
ここまでのコードと実行結果です。
class NiziU:
def __init__(self,name,color):
self.name=name
self.color=color
def profile(self):
print('名前:【'+self.name+('】, カラー:【'+self.color+'】'))
#メンバーリストの定義とインスタンス化
member=[]
member.append(NiziU('MAKO ','オレンジ'))
member.append(NiziU('RIO ','水色 '))
member.append(NiziU('MAYA ','紫 '))
member.append(NiziU('RIKU ','黄色 '))
member.append(NiziU('AYAKA ','白 '))
member.append(NiziU('MAYUKA','薄緑 '))
member.append(NiziU('RIMA ','赤 '))
member.append(NiziU('MIIHI ','ピンク '))
member.append(NiziU('NINA ','青 '))
#内包表記を使用
[oshi.profile() for oshi in member]
お疲れ様でした。ブレイクタイムPhotoは、
遊歩道の桜です。
それと、NiziUの曲2つです。
ご精読ありがとうございました。
■ 独習Python ■
Kindle版
単行本(ソフトカバー)