練習問題

5.4 練習問題

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

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

設問
① 頭文字に「_(アンダークラス)」を一つ付けられた変数の値は参照できない。
② 頭文字に「_(アンダークラス)」を二つ付けられた変数の値は参照できない。
③ カプセル化とはインスタンス変数をアクセス不可能にしただけのクラスのことをさす。
④ アクセサメソッドには値を設定するセッターメソッドと、値を取得するゲッターメソッドの総称である。

問2 以下のカプセル化したソースコードの誤り3つ答えなさい。

ソースコード

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

    class Dog:

        def __init__(self,name='ケン'):
            self._name = name

        #ゲッター定義
        @property
        def getName(self):
            return name

        #セッター定義
        @property
        def setName(self,value):
            self.__name = value
	

問3 以下に示すBooks1クラスをカプセル化しなさい。

ヒント
  • インスタンス変数のアクセス制限
  • 各インスタンス変数に対応するアクセサメソッドの定義
ソースコード

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

    class Books:

        def __init__(self,title='Python基礎テキスト',price=300):
            self.title = title
            self.price = price

        def show(self):
            print('この本のタイトルは' + self.title + 'で、値段は' + str(self.price)+ '円です。')
	

問4 問4でカプセル化したクラスBooksで、不正な値を防ぐ処理を追加したクラスBooks2を作成しなさい。

変更仕様

価格について負の値が入力された場合は「0」を設定する処理をpriceのセッターメソッドに追加する。
不正な値の場合は以下のメッセージを画面に出力する。
「設定する値が-Xのため、価格は0を設定しました。」
※「-X」は引数の値を出力するためその都度変わります。

問5 問4で作成したBooks2クラスをコピーしてBooks3クラスを定義した上で、以下の実行結果になるよう処理を作成しなさい。

実行結果

	この本のタイトルはPython入門テキストで、値段は2580円です。
	設定する値が-3800のため、価格は0を設定しました。
	この本のタイトルはPython応用テキストで、値段は0円です。
	

Books3以下の処理仕様

① Books3インスタンスを2つ生成する。
② 1つ目のインスタンスにタイトル「Python入門テキスト」、価格「2580」を設定する。
③ ②の結果を画面に表示するshowメソッドを呼び出す。
④ 2つ目のインスタンスにタイトル「Python応用テキスト」、価格「-3800」を設定する。
⑤ ④の結果を画面に表示するshowメソッドを呼び出す。
※②④の値の設定には各セッターメソッドを利用する。

ソースコード

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


NEXT>> 5.5 練習問題 解答