Question: Verify that your Movie class code handles keys - i.e. accepts None appropriately. class Movie : Defines data for a single movie: title, year,
Verify that your Movie class code handles keys - i.e. accepts None appropriately.
class Movie:
"""
Defines data for a single movie: title, year, director, rating, genres.
"""
# Constants
MIN_RATING = 0
MAX_RATING = 10
FIRST_YEAR = 1888
GENRES = ("science fiction", "fantasy", "drama",
"romance", "comedy", "zombie", "action",
"historical", "horror", "war", "mystery")
# Defines a range of valid integer genre codes:
GENRE_CODES = range(len(GENRES))
@staticmethod
def genres_menu():
"""
-------------------------------------------------------
Creates a string of Movie genres in the format:
0 science fiction
1 fantasy
2 drama
...
Use: s = Movie.genres_menu()
Use: print(Movie.genres_menu())
-------------------------------------------------------
Returns:
string - A numbered string of Movie genres.
-------------------------------------------------------
"""
s = 'genres'
for index, genre in enumerate(Movie.GENRES):
s += ' {} {}' .format(index,genre)
return s
def __init__(self, title, year, director, rating, genres):
"""
-------------------------------------------------------
Initializes a Movie object.
Use: movie = Movie(title, year, director, rating, genres)
-------------------------------------------------------
Parameters:
title - movie title (str)
year - year of release (int)
director - name of director (str)
rating - rating of 1 - 10 from IMDB (float)
genres - numbers representing movie genres_list (list of int)
Returns:
A new Movie object (Movie)
-------------------------------------------------------
"""
assert year >= Movie.FIRST_YEAR, "Movie year must be >= {}".format(
Movie.FIRST_YEAR)
assert rating is None or Movie.MIN_RATING <= rating <= Movie.MAX_RATING, \
"Movie ratings must be between {} and {}".format(
Movie.MIN_RATING, Movie.MAX_RATING)
assert genres is None or genres == [] or min(genres) in Movie.GENRE_CODES, "Invalid genre code {}".format(
min(genres))
assert genres is None or genres == [] or max(genres) in Movie.GENRE_CODES, "Invalid genre code {}".format(
max(genres))
self.title = title
self.year = year
self.director = director
self.rating = rating
self.genres = genres
def __str__(self):
"""
-------------------------------------------------------
Creates a formatted string of movie data.
Use: print(movie)
Use: print( "{}".format(movie))
Use: string = str(movie)
-------------------------------------------------------
Returns:
string - the formatted contents of movie (str)
-------------------------------------------------------
"""
# Generate the list of genres as a string.
genres_list = self.genres_string()
string = """Title: {}
Year: {}
Director: {}
Rating: {}
Genres: {}""".format(self.title, self.year, self.director, self.rating, genres_list)
return string
while testing I used:
from Movie2 import Movie
key = Movie('Juno', 2007, None, None, None)
print(key)
I know I need to make changes to the movie class functions __init__ and __str__
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
