練習問題
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の値を戻り値として返す。
引数で受け取った教科情報をインスタンス変数__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が代入される