47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import string
|
|
from dataclasses import dataclass
|
|
from media import *
|
|
|
|
|
|
class Movie(Media):
|
|
def __init__(self, title, year, parental_rating, rating):
|
|
self.parental_rating = parental_rating
|
|
self.rating = rating
|
|
|
|
super().__init__(title, year)
|
|
|
|
def movie_ratings(self, title, year, parental_rating, rating, imdb_rating):
|
|
self.title = title
|
|
self.year = year
|
|
self.parental_rating = parental_rating
|
|
self.rating = imdb_rating * 10
|
|
|
|
def __eq__(self, obj):
|
|
return (isinstance(obj, Movie) and
|
|
self.title == obj.title and
|
|
self.year == obj.year and
|
|
self.parental_rating == obj.parental_rating and
|
|
self.rating == obj.rating)
|
|
|
|
def compare_to(self, other):
|
|
if other is None:
|
|
return 1
|
|
elif self.rating > other.rating:
|
|
return 1
|
|
elif self.rating < other.rating:
|
|
return -1
|
|
else:
|
|
return 0
|
|
|
|
# Here if I didn't use total_ordering, I would need to complete the logic.
|
|
# I think it will work exactly as your CompareTo logic.
|
|
|
|
def __hash__(self):
|
|
return hash((self.title, self.year, self.parental_rating, self.rating))
|
|
|
|
def __str__(self):
|
|
return f"Movie: {self.title}, {self.year}, Parental Rating: {self.parental_rating}, IMDB Rating: {round(self.rating / 10, 1)}"
|
|
|
|
def print_details(self):
|
|
print(f"Movie: {self.title}, {self.year}, Parental Rating: {self.parental_rating}, IMDB Rating: {round(self.rating / 10, 1)}")
|
|
|