Classes Livre et Utilisateur
Fait partie de la section Object Oriented Programming du Journey Python de Coddy — leçon 56 sur 64.
Défi
FacileDans ce défi, vous allez implémenter la classe Book pour un système de gestion de bibliothèque en utilisant une structure multi-fichiers avec une couverture de test complète.
Modifiez book.py pour implémenter la classe Book en suivant les commentaires TODO. L'implémentation doit :
- S'initialiser avec les paramètres title, author, et isbn
- Suivre le statut de disponibilité et les informations sur l'emprunteur
- Implémenter une représentation sous forme de chaîne de caractères appropriée
Aide-mémoire
Le défi porte sur l'implémentation d'une classe Book pour un système de gestion de bibliothèque. La classe doit gérer l'initialisation des livres, suivre le statut de disponibilité et les informations sur l'emprunteur, et fournir une représentation sous forme de chaîne de caractères appropriée.
Composants clés à implémenter :
- Initialiser avec les paramètres title, author et ISBN
- Suivre le statut de disponibilité et les informations sur l'emprunteur
- Implémenter des méthodes de représentation sous forme de chaîne de caractères appropriées
Essayez vous-même
from book import Book
from library import Library
# Gestionnaire de cas de test complet
test_case = input()
if test_case == "create_book":
library = Library("Community Library")
title = "Title"
author = "Author"
isbn = "ISBN"
book = Book(title, author, isbn)
print(book)
elif test_case == "add_to_library":
library = Library("Community Library")
book1 = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
book2 = Book("To Kill a Mockingbird", "Harper Lee", "789012")
library.add_book(book1)
library.add_book(book2)
print(f"Library has {len(library.books)} books")
print(f"Book 1: {library.books[0]}")
print(f"Book 2: {library.books[1]}")
elif test_case == "book_availability":
book = Book("1984", "George Orwell", "345678")
print(f"Initial availability: {book.available}")
# Modifier la disponibilité
book.available = False
print(f"After change: {book.available}")
print(book) # Devrait afficher "Not Available"
elif test_case == "empty_values":
book = Book("", "", "")
print(book)
library = Library("")
library.add_book(book)
print(library)
elif test_case == "special_characters":
book = Book("Title with $#@!", "Author with &*^%", "ISBN-123!@#")
print(book)
elif test_case == "multiple_books":
library = Library("Public Library")
books = [
Book("Book 1", "Author 1", "111111"),
Book("Book 2", "Author 2", "222222"),
Book("Book 3", "Author 3", "333333"),
Book("Book 4", "Author 4", "444444"),
Book("Book 5", "Author 5", "555555")
]
for book in books:
library.add_book(book)
print(library)
for i, book in enumerate(library.books):
print(f"Book {i+1}: {book}")
elif test_case == "borrower_assignment":
book = Book("The Hobbit", "J.R.R. Tolkien", "987654")
print(f"Initial borrower: {book.borrower}")
book.borrower = "John Doe"
book.available = False
print(f"New borrower: {book.borrower}")
print(book)
elif test_case == "attribute_access":
book = Book("Pride and Prejudice", "Jane Austen", "246810")
print(f"Title: {book.title}")
print(f"Author: {book.author}")
print(f"ISBN: {book.isbn}")
print(f"Available: {book.available}")
print(f"Borrower: {book.borrower}")
# Modifier les attributs
book.title = "Updated Title"
book.author = "Updated Author"
book.isbn = "999999"
book.available = False
book.borrower = "Jane Smith"
print("\
After modifications:")
print(f"Title: {book.title}")
print(f"Author: {book.author}")
print(f"ISBN: {book.isbn}")
print(f"Available: {book.available}")
print(f"Borrower: {book.borrower}")Toutes les leçons de Object Oriented Programming
1Les fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe paramètre selfMéthodesAttributsMéthode constructeur (__init__)Récapitulatif - Calculatrice simple4Héritage
Héritage de baseLa fonction super()Redéfinition de méthodeHéritage multipleOrdre de résolution des méthodesRécapitulatif - Hiérarchie des employés7Méthodes spéciales
Introduction aux méthodes magiquesSurcharge d'opérateursMéthodes magiques de conteneurRécapitulatif - Liste personnalisée10Patrons de conception, Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron Strategy2Décorateurs
Introduction aux décorateursDécorateur de propriétéDécorateur de méthode statiqueDécorateur de méthode de classe5Polymorphisme
Retour sur la redéfinition de méthodeDuck TypingClasses et méthodes abstraitesConception d'interfacesRécapitulatif - Calculateur de formes8Concepts avancés de la POO
Composition vs HéritageMixinsMéthodes statiques et de classeDécorateurs de classeGestionnaires de contexte11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Propriétés de classe
Variables d'instance vs variables de classeDécorateurs de propriétéAttributs privésRécapitulatif - Gestionnaire de compte bancaire6Encapsulation
Membres Publics, Protégés, PrivésModificateurs d'accèsMasquage d'informationsDécorateurs Property AvancésRécapitulatif - Système de Gestion d'Étudiants12Projet : Gestion de bibliothèque
Présentation du projetClasses Livre et Utilisateur