属性の変更
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行の入力を受け取ります。最初の行には属性名(
title
、author
、price
、quantity_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