属性の変更
Pythonでは、クラスのインスタンスを作成した後でも、初期化時に割り当てた値だけに限定されません。インスタンスの属性を直接変更することができます。例えば、前述のBookクラスを使ってみましょう。Bookのインスタンスを作成した後、ページ数や著者名を更新したい場合があります。これは、ドット演算子.を使って属性に直接アクセスし、新しい値を代入することで実現できます。
class Book:
def __init__(self, title, author, pages):
self.title = title # 本のインスタンスにタイトルを割り当てる
self.author = author # 本のインスタンスに著者を割り当てる
self.pages = pages # 本のインスタンスにページ数を割り当てる
self.is_read = False # まだ読まれていない
book1 = Book('To Kill a Mockingbird', 'Harper Lee', 281)
print(book1.pages) # 281
book1.pages = 324 # ページ数を更新
print(book1.pages) # 324
print(book1.author) # 'Harper Lee'
book1.author = 'Lee, Harper' # 著者名を更新
print(book1.author) # 'Lee, Harper'チャレンジ:Bookクラスを作成しよう
あなたの課題は、以下の4つの属性を持つBookクラスを設計することです:
title: デフォルトは "Untitled Book"author: デフォルトは "Unknown Author"price: デフォルトは 0.0quantity_in_stock: デフォルトは 0
クラスは、これらのデフォルト値で全ての属性を初期化する必要があります(__init__メソッドは引数を取りません)。また、現在の本の属性を読みやすい形式で表示するためのdisplayメソッドを含めてください。表示形式は "Title: [title], Author: [author], Price: [price], Quantity in stock: [quantityinstock]" とします。
プログラムは2行の入力を受け取ります。最初の行には属性名(title、author、price、quantity_in_stock)が含まれます。2行目にはその属性に対する値が含まれます。
あなたのプログラムは、この新しい値を指定された属性に割り当て、Bookオブジェクトのdisplayメソッドを呼び出して、本の現在の属性を表示してください。
入力 | 出力 |
|---|---|
title | Title: War and Peace, Author: Unknown Author, Price: 0.0, Quantity in stock: 0 |
quantityinstock | Title: Untitled Book, Author: Unknown Author, Price: 0.0, Quantity in stock: 20 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB