練習問題

10.8 練習問題

本章で習った内容を元に練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① スーパークラスからは1つしかサブクラスを作成できない。
② 2つ以上スーパークラスを継承したサブクラスを作成できない。
③ サブクラスはスーパークラスの変数、メソッドを全て継承して利用することができる。
④ サブクラス内でスーパークラスと同じ定義のメソッドを記述することはできない。
⑤ 抽象クラスを継承したサブクラスは、抽象メソッドをオーバーロードしなくて良い。

問2 以下のクラスについて説明をした設問について○か×で答えなさい。

    class X (Y):
        s = 45

        def __init__(self,s):
        super().__init__(‘s’)
        super.z = null
        self.s = s

        def m():
            super().n
	

設問
① クラスXがクラスYのスーパークラスになる。
② クラスYにsという変数があるとコンパイルエラーになる。
③ クラスYに引数ありのコンストラクタが定義されている必要がある。
④ クラスYにnというメソッドが定義されている必要がある。
⑤ クラスYにmというメソッドが定義されていなくてもよい。

問3 以下に示すソースコードを実行した時の、結果①~⑧に入る文字を答えなさい。

ソースコード

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第10章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第10章.ipynb

    class SampleA:

        def __init__(self,a):
            print('[クラスSampleA]の',a,'のコンストラクタ')

    class SampleB(SampleA):

        def __init__(self,a,b):
            super().__init__(a)
            print('[クラスSampleB]の',b,'のコンストラクタ')

    sb1 = SampleB('a1','b1')
    sb2 = SampleB('a2','b2')
	

実行結果

	クラスSample[①]の[②]のコンストラクタ
	クラスSample[③]の[④]のコンストラクタ
	クラスSample[⑤]の[⑥]のコンストラクタ
	クラスSample[⑦]の[⑧]のコンストラクタ
	

問4 以下に示すクラスBooksを継承した以下の仕様をもつ、TextBooksクラスを作成しなさい。

ソースコード

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第10章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第10章.ipynb

    class Books:

        def __init__(self,title='未定',price=0):
            self.__title = title
            self.__price = price
            print('本を作成しました。')

        #ゲッターの定義
        @property
        def getTitle(self):
            return self.__title

        #セッターの定義
        @getTitle.setter
        def setTitle(self,value):
            self.__title = value
            print('この本のタイトルは' + self.__title +'にしました。')

        #ゲッターの定義
        @property
        def getPrice(self):
            return self.__price

        #セッターの定義
        @getPrice.setter
        def setPrice(self,value):
            self.__price = value
            print('この本の価格は' + str(self.__price) + '円にしました。')
	

作成仕様

Booksクラスを継承するTextBooksクラスを生成する

①コンストラクタ
Booksのコンストラクタを継承する。
__subjectというインスタンス変数があり、コンストラクタの引数subjectが代入されるものとする。

②メソッド
メソッド名:getSubject
デコレータ:@property
引数:selfのみ
戻り値:インスタンス変数__subject
概要:インスタンス変数__subjectの値を戻り値として返す。

メソッド名:setSubject
デコレータ:@getSubject.setter
引数:self、value
戻り値:なし
概要:

引数で受け取った教科情報をインスタンス変数__subjectに設定する。
「この本の教科をXXXXにしました。」と画面に出力処理を行う。
※XXXXは引数の値

問5 問4で作成したBooksクラスを抽象クラスに書き換え、抽象メソッドを付けたせるようソースコードを書き換えなさい。またTextBooksクラスで付け加えた抽象クラスをオーバーロードしなさい。

ソースコード

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第10章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第10章.ipynb

作成仕様

【Books1クラス】
① クラス事態を抽象クラスに書き換える
② 以下の抽象メソッドを付け加える
メソッド名: showBook
引数: self
戻り値: なし
概要: pass

【TextBooks】 ① 以下のメソッドを付け加える メソッド名: showBook 引数: self 戻り値: なし 概要:以下の様に出力されるメソッドである。

※△△にはインスタンス変数__subject、××にはインスタンス変数__title、●●にはインスタンス変数__priceが代入される


NEXT>> 10.9 練習問題 解答