練習問題 解答

3.6 練習問題 解答

問1

① ○
② ×:コンストラクタの名前は「__init__」、戻り値は「設定できない」制約がある。
③ ×:コンストラクタには第一引数を指定する必要があるが、引数名はselfでなくてもよい。
④ ○
⑤ ○

問2

① 戻り値の型が定義されている。
② コンストラクタのメソッド、名が「__init__」になっていない。
③ コンストラクタのPesonPrintのメソッドに第一引数(self)が設定されていない。

    #クラスPersonを定義
    class Person:
        #コンストラクタの定義
        def __init__(self,person):
            #戻り値の設定
            self.person = person
        def PersonPrint(self):
            print(self.person)

    Person1 = Person("田中")
    Person1.PersonPrint() 
	

問3

    #クラスPersonを定義
    class TestScore:
        #コンストラクタの定義
        def __init__(self,name,mathSc,scienceSc,english):
            #名前
            self.name = name
            #数学の得点
            self.mathSc = mathSc
            #理科の得点
            self.scienceSc = scienceSc
            #英語の得点
            self.english = english

        #合計得点の計算
        def culc_test(self):
            #各得点をまとめたリスト 
            test_list = [self.mathSc,self.scienceSc,self.english ]

            #合計得点を格納する変数totalの宣言
            total = 0 

            #totalに合計得点を格納するためのfor文開始
            for i in test_list:
                total = total + i
            print(self.name,'さんの数学の点数は',self.mathSc,'点です。')
            print(self.name,'さんの理科の点数は', self.scienceSc,'点です。')
            print(self.name,'さんの英語の点数は', self.english,'点です。')
            print(self.name,'さんの合計得点は',total,'点です。')

    #インスタンスの生成
    person_1 = TestScore('田中',42,32,22)

    #メソッドculc_testの呼び出し
    person_1.culc_test()
	

NEXT>>第4章 クラス変数とインスタンス変数