練習問題 解答
4.6 練習問題 解答
問1
① ○
② ○
③ ×:クラス変数はオブジェクト共通の情報なのでアクセスは可能です。
④ ×:クラス変数はクラス自身に関連付けられるため、オブジェクトには関連付けられない。
⑤ ×:インスタンス変数は、インスタンスメソッドからアクセスできるが、クラスメソッドからはアクセスできない。
問2
① クラスメソッドの第一引数clsが抜けている。:×count → 〇cls.count
② インスタンス変数の参照する際に、インスタンスメソッドの第一引数selfが抜けている。:×num、distance → 〇self.num、self.distance
③ インスタンスメソッドをインスタンスを介さずに直接呼び出している。:×Car.showInformation() → 〇car1.showInformation()
問3
class Book:
count = 0
#コンストラクタの定義
def __init__(self,title,price):
self.title = title
self.price = price
Book.count += 1
self.number = Book.count
問4
class Book2:
count = 0
#コンストラクタの定義
def __init__(self,title,price):
self.title = title
self.price = price
Book2.count += 1
self.number = Book2.count
def showBook(self):
print('この本のタイトルは',self.title,'価格は',self.price,'円です。')
print('生成番号は',self.number,'です。')
@classmethod
def getCount(cls):
return cls.count
問5
class Book3:
#問4の内容を記載
count = 0
#コンストラクタの定義
def __init__(self,title,price):
self.title = title
self.price = price
Book3.count += 1
self.number = Book3.count
def showBook(self):
print('この本のタイトルは',self.title,'価格は',self.price,'円です。')
print('生成番号は',self.number,'です。')
@classmethod
def getCount(cls):
return cls.count
#3回for文開始
for i in range(3):
#タイトルの入力
title = input('本のタイトルを入力してください')
#価格の入力
price = input('本の価格を入力してください')
#title、priceを引数にクラスBook3からインスタンスbook1を生成
book1 = Book3(title,price)
#インスタンスbook1を介してshowBookメソッドを実行
book1.showBook()
#インスタンスの生成回数を表示
print('本の生成回数は',Book3.getCount(),'回です。')