-
Notifications
You must be signed in to change notification settings - Fork 1
Group 4 - refactoring library class #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| from typing import Optional | ||
| from library.model.book import Book | ||
| from library.model.genre import Genre | ||
|
|
||
|
|
||
| class Library(): | ||
|
|
||
| # Prints crime audio books | ||
| def print_longest_crime_audio_book(self) -> str: | ||
| crime_audio_books: list[Book] = [] | ||
| max: Optional[Book] = None | ||
|
|
||
| # print banner | ||
| print("*********************************************") | ||
| print("********* Longest Crime Audio Book **********") | ||
| print("*********************************************") | ||
|
|
||
| for b in self.get_books(): | ||
| if Genre.CRIME in b.genres: | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. combine the two if statements to one if statement |
||
| if b._book_type == "Audio": | ||
| if max is not None and max.duration < b.duration: | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is a bug here, it should be "max is None or max.duration < b.duration"
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, there may be multiple books of the same maximum length. Then, only the first one is actually printed out. |
||
| max = b | ||
| # end if | ||
| # end if | ||
| else: | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Else branch not necessary |
||
| pass | ||
| # end else | ||
| # end for | ||
|
|
||
| print(f"Title: {max.title}") | ||
| print(f"Author: {max.authors}") | ||
| print(f"Duration: {max.duration}") | ||
| print(f"______________________________") | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe add the other variables of book to the printout |
||
| return str(max) | ||
|
|
||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The constructor and the class variable should be above the print function in our opinion for better readability |
||
| # Constructor | ||
| def __init__(self, books: list[Book]): | ||
| self._books = books | ||
|
|
||
| _books: list[Book] = [] | ||
|
|
||
| def get_books(self) -> list[Book]: | ||
| return self._books | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable is never used