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