# -*- coding: utf-8 -*-
"""
インスタンスメソッドの宣言と利用（SCard）
"""


# 学生証のクラス
class SCard:
    # コンストラクタ
    def __init__(self, id=0, name="匿名希望"):
        self.id   = id
        self.name = name

    """ 指示１ここから """
    # このコメントブロックの下に，
    # 引数と戻り値を持たないインスタンスメソッド
    # print_info() を宣言しなさい
    # 
    ### print_info(self)
    # 自身が持つインスタンス変数 id と name を
    # id, name
    # の形でターミナルに表示
    # id の部分は0埋め4桁の整数の形とする
    # 先頭の引数 self を書き忘れがちなので注意すること
    
    """ 指示１ここまで """


    """ 指示２ここから """
    # このコメントブロックの下に，
    # int型引数を１つと，str型引数を１つ持ち，
    # 戻り値を持たないインスタンスメソッド
    # update_info() を宣言しなさい
    # 
    ### update_info(self, id, name)
    # 自身が持つインスタンス変数 id と name に
    # 引数の id, name それぞれを代入する形で更新
    # 先頭の引数 self を書き忘れがちなので注意すること
    
    """ 指示２ここまで """



def main():
    # listの要素の型をあらかじめ指定してみる
    sc_list:list[SCard] = []

    # インスタンス変数の直接の書き換えを避けるためにも
    # コンストラクタを利用
    for _ in range(3):
        id   = int(input("学籍番号（下４桁）："))
        name = input("氏名：")
        sc_list.append(SCard(id, name))
    print()  # 採点の都合上の空行

    # あらかじめ型を指定しているため，要素にも補完が利く
    for sc in sc_list:
        sc.print_info()

    sc_list[0].update_info(9999, "名無し")
    id   = int(input("学籍番号（下４桁）："))
    name = input("氏名：")
    sc_list[2].update_info(id, name)
    print()  # 採点の都合上の空行

    print("ここから更新後")
    for sc in sc_list:
        sc.print_info()



if __name__ == "__main__":
    main()
