この記事を読むことで、
・7人組ボーイズグループ「BE:FIRST」を通してPythonのクラスの初歩的なコードが書けるようになる
・改行の仕方の復習
・内包表記を使ったループの復習
の概要が掴めます。
クラス=設計図
インスタンス=クラスという設計図から作られた「具体的な」製品
と説明をすると、なんだか小難しい感じがするので、
クラス… メンバーの【名前】、【出身地】、【身長】、【デビュー時の年齢】といったフォーマット
インスタンス… そのフォーマットから作った、
「SOTA(ソウタ)・SHUNTO(シュント)・MANATO(マナト)・RYUHEI(リュウヘイ)・JUNON(ジュノン)・RYOKI(リョウキ)・LEO(レオ)」のメンバーごとの名前など
と捉えると少し分かりやすくなるかもしれないです。
まず、クラスBefirstのコードの説明をします。
initは、最初に自動的に呼ばれるメソッド(関数)で、引数のselfとは、SOTAさん、SHUNTOさん、MANATOさん、RYUHEIさん、JUNONさん、RYOKIさん、LEOさんといった、具体的なメンバー自身のことです。
initが呼ばれた後に、profile (プロフィール)というメソッドが呼び出され、ここで各メンバーの名前・出身地・身長・デビュー時年齢(2021年8月時点)の紹介が出力されます。
profileメソッドの身長とデビュー時の年齢は数値なのでstrで括っています。
また、結果が見やすいように【 】で括っています。
class Befirst:
def __init__(self,name,place,height,age):
self.name=name
self.place=place
self.height=height
self.age=age
def profile(self):
print(" 【"+self.name+"】:【"+self.place+"】:【"+str(self.height)+"】cm:【"+str(self.age)+"】歳")
次に、各メンバーを格納するリストmemberと、クラスBefirstからインスタンス化(実例化)して作られたオブジェクト(SOTAさん、SHUNTOさん、MANATOさん、RYUHEIさん、JUNONさん、RYOKIさん、LEOさん)をリストにappendを使って追加するコードです。
ここでは、memberというリストに追加しています
#メンバーのリストを作成
member=[]
#インスタンス化して作ったオブジェクトをリストに追加
member.append(Befirst("池亀樹音","東京都",183,23))
member.append(Befirst("上村礼王","埼玉県",179,22))
member.append(Befirst("三山凌輝","愛知県",177,22))
member.append(Befirst("島雄壮大","神奈川",174,20))
member.append(Befirst("廣瀬真人","福岡県",173,20))
member.append(Befirst("久保舜斗","愛知県",174,17))
member.append(Befirst("黒田竜平","愛知県",180,14))
メンバーを追加したリストmemberをループで取り出して、profileメソッドを呼び出すコードです。
#ループでプロフィールメソッドを呼び出す
for man in member:
man.profile()
この部分を内包表記で書くと、
#ループで同様の処理を内包表記で書く処理
[man.profile() for man in member]
このように1行で書けます。
ここまでのコードと実行結果です。
class Befirst:
def __init__(self,name,place,height,age):
self.name=name
self.place=place
self.height=height
self.age=age
def profile(self):
print(" 【"+self.name+"】:【"+self.place+"】:【"+str(self.height)+"】cm:【"+str(self.age)+"】歳")
#メンバーのリストを作成
member=[]
#インスタンス化して作ったオブジェクトをリストに追加
member.append(Befirst("池亀樹音","東京都",183,23))
member.append(Befirst("上村礼王","埼玉県",179,22))
member.append(Befirst("三山凌輝","愛知県",177,22))
member.append(Befirst("島雄壮大","神奈川",174,20))
member.append(Befirst("廣瀬真人","福岡県",173,20))
member.append(Befirst("久保舜斗","愛知県",174,17))
member.append(Befirst("黒田竜平","愛知県",180,14))
#ループで同様の処理を内包表記で書く処理
[man.profile() for man in member]
お疲れ様でした。ブレイクタイムPhotoは、
しながわ花海道のコスモスです。
ご精読ありがとうございました。
■ 独習Python ■
Kindle版
単行本(ソフトカバー)