属性の変更

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.0
  • quantity_in_stock: デフォルトは 0
クラスは、これらのデフォルト値で全ての属性を初期化する必要があります(__init__メソッドは引数を取りません)。また、現在の本の属性を読みやすい形式で表示するためのdisplayメソッドを含めてください。表示形式は "Title: [title], Author: [author], Price: [price], Quantity in stock: [quantityinstock]" とします。
プログラムは2行の入力を受け取ります。最初の行には属性名(titleauthorpricequantity_in_stock)が含まれます。2行目にはその属性に対する値が含まれます。
あなたのプログラムは、この新しい値を指定された属性に割り当て、Bookオブジェクトのdisplayメソッドを呼び出して、本の現在の属性を表示してください。
入力
出力
title War and Peace
Title: War and Peace, Author: Unknown Author, Price: 0.0, Quantity in stock: 0
quantityinstock 20
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

To check your solution you need to sign in
Sign in to continue