練習問題
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が代入される