Build a Media Catalogue

Docstrings can be accessed through the __doc__ attribute, which is set to None by default.

Verify it by printing movie1.__doc__ and series1.__doc__. Note that the __doc__ attribute is not inherited by any child class.

CODE:
class Movie:

"""Parent class representing a movie."""



def \__init_\_(self, title, year, director, duration):

    if not title.strip():

        raise ValueError('Title cannot be empty')

    if year < 1895:

        raise ValueError('Year must be 1895 or later')

    if not director.strip():

        raise ValueError('Director cannot be empty')

    if duration <= 0:

        raise ValueError('Duration must be positive')

    

    self.title = title

    self.year = year

    self.director = director

    self.duration = duration



def \__str_\_(self):

    return f'{self.title} ({self.year}) - {self.duration} min, {self.director}'

class TVSeries(Movie):

def \__init_\_(self, title, year, director, duration, seasons, total_episodes):

    super().\__init_\_(title, year, director, duration)

    

    if seasons < 1:

        raise ValueError('Seasons must be 1 or greater')

    if total_episodes < 1:

        raise ValueError('Total episodes must be 1 or greater')

    

    self.seasons = seasons

    self.total_episodes = total_episodes



def \__str_\_(self):

    return f'{self.title} ({self.year}) - {self.seasons} seasons, {self.total_episodes} episodes, {self.duration} min avg, {self.director}'

class MediaCatalogue:

def \__init_\_(self):

    self.items = \[\]



def add(self, media_item):

    self.items.append(media_item)



def \__str_\_(self):

    if not self.items:

        return 'Media Catalogue (empty)'

    

    result = f'Media Catalogue ({len(self.items)} items):\\n\\n'

    for i, movie in enumerate(self.items, 1):

        result += f'{i}. {movie}\\n'

    

    return result

catalogue = MediaCatalogue()

try:

movie1 = Movie('The Matrix', 1999, 'The Wachowskis', 136)

catalogue.add(movie1)

movie2 = Movie('Inception', 2010, 'Christopher Nolan', 148)

catalogue.add(movie2)



series1 = TVSeries('Scrubs', 2001, 'Bill Lawrence', 24, 9, 182)

catalogue.add(series1)

series2 = TVSeries('Breaking Bad', 2008, 'Vince Gilligan', 47, 5, 62)

catalogue.add(series2)



print(catalogue)

except ValueError as e:

print(f'Validation Error: {e}')

Welcome to the forum @bullpolo412578963 ,

If you have a question about a specific challenge as it relates to your written code for that challenge and need some help, click the Help button located on the challenge.

The Help button will create a new topic with all code you have written and include a link to the challenge also. You will still be able to ask any questions in the post before submitting it to the forum.

Thank you.

Happy coding