練習問題
4.5 練習問題
本章で習った内容を元に練習問題を解いてください。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① クラス内における変数は、インスタンス変数またはクラス変数に分類することができる。
② インスタンス変数はインスタンスを生成して初めてアクセスが可能になる。
③ インスタンスメソッドからクラス変数へアクセスは不可能。
④ インスタンスを生成すると、クラス変数もインスタンスに関連付けられる。
⑤ クラスメソッドからインスタンス変数にアクセス可能。
問2 以下に示すソースコード①~③が、どのように間違っているか答えなさい。
ソースコードソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb
問3 以下の仕様をもつBookクラスを定義しなさい。
① クラス変数 count 整数0で初期化
② インスタンス変数 title
③ インスタンス変数 price
④ インスタンス変数 number
クラス変数のcountをインクリメント(1増やす)します。
引数の値を同一名のインスタンス変数にそれぞれ格納します。
インスタンス変数numberにクラス変数countの値を代入します。
ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb
class Book: #インスタンス変数4つ持つコンストラクタを定義
問4 問3で作成したクラスBookに、以下の仕様をもつ2つのメソッドを追加したクラスBook2を作成しなさい。
関数の仕様
メソッド名 :showBook(インスタンスメソッド)
戻り値 :なし
引数 :self
処理内容 :以下のメッセージを画面に出力する。※title、price、numberはインスタンス変数です。「この本のタイトルはtitle、価格はprice円です。」
メソッド名 :getCount(クラスメソッド)
戻り値 :クラス変数count
引数 :cls
処理内容 :クラス変数countの値をリターンする。
ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb
class Book2: #コンストラクタの定義 #インスタンスメソッドshowBookの定義 #クラスメソッドgetCountの定義;
問5 問4で作成したBook.2をコピーしBook3クラスを作成し、以下の実行結果になるように以下のソースコードを書き換えなさい。
実行結果本のタイトルを入力してくださいJava 本の価格を入力してください2000 この本のタイトルは Java 価格は 2000 円です。 生成番号は 1 です。 本のタイトルを入力してくださいRuby 本の価格を入力してください1000 この本のタイトルは Ruby 価格は 1000 円です。 生成番号は 2 です。 本のタイトルを入力してくださいHtml 本の価格を入力してください500 この本のタイトルは Html 価格は 500 円です。 生成番号は 3 です。 本の生成回数は 3 回です。ソースコードの仕様
① 3回ループするfor文を記述する。
② input関数を使用して入力を促し、新しく別に宣言するtitlel、priceという変数にそれぞれ格納する
③ キーボードから本のタイトルを入力する。※1
④ キーボードから本の価格を入力する。※1
⑤ ③と④で入力した値を引数に、Book3クラスからインスタンス(インスタンス名book1)を生成する
⑥ ⑤で生成したインスタンスメソッドを介してshowBookメソッドにアクセスする。※1
⑦ Book3クラス変数であるgetCountメソッドを利用して、画面に本の総生成回数を表示する。※2 ※1:②のループ内で処理を行う。 ※2:②のループ外で処理を行う。
ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb
class Book3: #問4の内容を記載 #3回for文開始 for i in range(3): #タイトルの入力 title = input('本のタイトルを入力してください') #価格の入力 price = input('本の価格を入力してください') #title、priceを引数にクラスBook3からインスタンスbook1を生成 #インスタンスbook1を介してshowBookメソッドを実行 #インスタンスの生成回数を表示