練習問題 解答
10.9 練習問題 解答
問1
① ×:スーパークラスからはいくつでもサブクラスを作成できる。
② ×:サブクラスの継承もとになるスーパークラスは複数選べる。
③ ○
④ ×:サブクラス内でスーパークラスと同じ定義のメソッドを記述できる。
⑤ ×:必ずオーバーロードするため定義し直されなければならない。
問2
① ×:クラスYがクラスXのスーパークラスになる。
② ×:スーパークラスと同じ名前の変数をサブクラスでも定義できる。
③ ○:引数ありのコンストラクタが必要になる。
④ 〇:super()関数で呼び出しているため必要になる。
⑤ ○:スーパークラスに同じ名前のメソッドが定義されている必要はない。
問3
① A ② a1 ③ B ④ b1
⑤ A ⑥ a2 ⑦ B ⑧ b2
出力結果
[クラスSampleA]の a1 のコンストラクタ [クラスSampleB]の b1 のコンストラクタ [クラスSampleA]の a2 のコンストラクタ [クラスSampleB]の b2 のコンストラクタ
問4
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) + '円にしました。') #以下にTextBooksクラスを定義しなさい class TextBooks(Books): def __init__(self,subject='未定'): super().__init__() self.__subject = subject #ゲッターの定義 @property def getSubject(self): return self.__subject #セッターの定義 @getSubject.setter def setSubject(self,value): self.__subject = value print('この本の教科を' + self.__subject + 'にしました。')
問5
import abc class Books(metaclass=abc.ABCMeta): 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) + '円にしました。') @abc.abstractmethod def showBook(self): pass #以下にTextBooksクラスを定義しなさい class TextBooks(Books): def __init__(self,subject='未定'): super().__init__() self.__subject = subject #ゲッターの定義 @property def getSubject(self): return self.__subject #セッターの定義 @getSubject.setter def setSubject(self,value): self.__subject = value print('この本の教科を' + self.__subject + 'にしました。') def showBook(self): print('教科:' + self.__subject) print('タイトル:' + self.getTitle) print('価格:' + str(self.getPrice) + '円')