![]() |
Is my code OOP and what could i do better? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: General (https://python-forum.io/forum-1.html) +--- Forum: Code Review (https://python-forum.io/forum-46.html) +--- Thread: Is my code OOP and what could i do better? (/thread-36516.html) |
Is my code OOP and what could i do better? - klajdi7 - Feb-28-2022 class Library: def __init__(self, listOfBooks=None): self.books = listOfBooks self.books1 = [] def displayAvailableBooks(self): print("Bücherliste: ") for book in self.books: print(" -" + book) def borrowBook(self, bookName): if bookName in self.books: print("Du hast das Buch "+bookName+" ausgeliehen ") self.books.remove(bookName) self.books1.append(bookName) return True else: print("Sorry, das Buch wurde bereits ausgeliehen") print("Verfügbare Bücher: ") for book in self.books: print(" -" + book) return False def returnBook(self, bookName): self.books.append(bookName) print("Buch zurückgebracht!") class Kunden: def __init__(self): self.kunden = [] def requestBook(self): self.book = input("Name des Buches zum ausleihen: ") return self.book def returnBook(self): self.book = input("Name des Buches zum zurückgeben: ") return self.book def displayAvailableKunden(self): print("Kundenliste: ") for kunden in self.kunden: print(" -" + kunden) def addKunden(self): name = input("Geben Sie den Namen des Kunden ein: ") self.kunden.append(name) def delKunden(self): name = input("Geben Sie den Namen des Kunden zum entfernen an: ") self.kunden.remove(name) class Bücher(Library): def __init__(self): self.borrowBooks = [] def displayUnavailableBooks(self): print("Liste mit ausgeliehenen Bücher: ") for books1 in self.books1: print(" -" + books1 ) if __name__ == "__main__": centraLibrary = Library(["Die kleine Raupe Nimmersatt", "Harry Potter", "Der Regenbogenfisch", "Elmar"]) Kunden = Kunden() Bücher=Bücher() while(True): willkomensNachricht = '''\n Bibliothek-APP Wähle eine Option: Alle Bücher anzeigen (1) Buch ausleihen (2) Buch zurückbringen (3) Verlassen (4) Kundenliste anzeigen (5) Kunden hinzufügen (6) Kunden entfernen (7) Ausgeliehene Bücher (8) anzeigen ''' print(willkomensNachricht) a = int(input("Auswahl eingeben: ")) if a == 1: centraLibrary.displayAvailableBooks() elif a == 2: centraLibrary.borrowBook(Kunden.requestBook()) elif a == 3: centraLibrary.returnBook(Kunden.returnBook()) elif a == 4: print("Aufwiedersehen!") exit() elif a == 5: Kunden.displayAvailableKunden() elif a == 6: Kunden.addKunden() elif a == 7: Kunden.delKunden() elif a == 8: Bücher.displayUnavailableBooks() else: print("Error!") RE: Is my code OOP and what could i do better? - BashBedlam - Feb-28-2022 If you select number 8 you get this error: Also, if it were me, I'd use strings instead of integers just because the script will handle errors like a letter being entered instead of a number. Here's my suggestion.while(True): willkomensNachricht = '''\n Bibliothek-APP Wähle eine Option: Alle Bücher anzeigen (1) Buch ausleihen (2) Buch zurückbringen (3) Verlassen (4) Kundenliste anzeigen (5) Kunden hinzufügen (6) Kunden entfernen (7) Ausgeliehene Bücher (8) anzeigen ''' print(willkomensNachricht) a = input("Auswahl eingeben: ") if a == '1': centraLibrary.displayAvailableBooks() elif a == '2': centraLibrary.borrowBook(Kunden.requestBook()) elif a == '3': centraLibrary.returnBook(Kunden.returnBook()) elif a == '4': print("Aufwiedersehen!") exit() elif a == '5': Kunden.displayAvailableKunden() elif a == '6': Kunden.addKunden() elif a == '7': Kunden.delKunden() elif a == '8': Bücher.displayUnavailableBooks() else: print("Error!") RE: Is my code OOP and what could i do better? - klajdi7 - Mar-01-2022 Do you have an idea how to fix the number 8 i've been trying multiple things and its still not working? RE: Is my code OOP and what could i do better? - BashBedlam - Mar-01-2022 (Mar-01-2022, 07:05 AM)klajdi7 Wrote: Do you have an idea how to fix the number 8 i've been trying multiple things and its still not working?Yes, since Bücher is aLibrary class, you just need to initialize it that way. Try it like this and notice line 3.class Bücher(Library): def __init__(self): super ().__init__ () self.borrowBooks = [] def displayUnavailableBooks(self): print("Liste mit ausgeliehenen Bücher: ") for books1 in self.books1: print(" -" + books1 ) |