En Python, después de crear una instancia de una clase, no estás limitado a los valores asignados durante la inicialización. Puedes modificar directamente los atributos de una instancia. Por ejemplo, usemos nuestra clase Book de antes. Después de crear una instancia de Book, tal vez quieras actualizar el número de páginas o el nombre del autor. Puedes lograr esto accediendo directamente al atributo usando el operador punto ., y asignando un nuevo valor:
class Book:
def __init__(self, title, author, pages):
self.title = title # Asignar el título a la instancia del libro
self.author = author # Asignar el autor a la instancia del libro
self.pages = pages # Asignar el número de páginas a la instancia del libro
self.is_read = False # El libro aún no ha sido leído
book1 = Book('To Kill a Mockingbird', 'Harper Lee', 281)
print(book1.pages) # 281
book1.pages = 324 # Actualizar el número de páginas
print(book1.pages) # 324
print(book1.author) # 'Harper Lee'
book1.author = 'Lee, Harper' # Actualizar el nombre del autor
print(book1.author) # 'Lee, Harper'
Desafío: Crear una Clase Book
Tu tarea es diseñar una clase Book con cuatro atributos:
title: por defecto "Libro sin título"
author: por defecto "Autor desconocido"
price: por defecto 0.0
quantity_in_stock: por defecto 0
La clase debe inicializar todos los atributos con estos valores predeterminados en su constructor (el método __init__ no debe tomar ningún argumento). La clase también debe incluir un método display para mostrar los atributos actuales del libro en un formato legible. El formato debe ser "Título: [title], Autor: [author], Precio: [price], Cantidad en stock: [quantityinstock]".
El programa luego tomará dos líneas de entrada. La primera línea contiene el nombre de un atributo (title, author, price, quantity_in_stock). La segunda línea contiene un valor para ese atributo.
Tu programa debe asignar este nuevo valor al atributo especificado en la entrada, y luego llamar al método display en el objeto Book para imprimir los atributos actuales del libro.
Entrada
Salida
title
War and Peace
Title: War and Peace, Author: Unknown Author, Price: 0.0, Quantity in stock: 0