Создание второго конструктора с помощью classmethod python

Рейтинг: 0Ответов: 0Опубликовано: 04.06.2023

Задача состоит в создании второго конструктора для класса. Первый конструктор принимает на вход параметры: имя, возраст, жанры, рейтинг:

def __init__(self, name, age, rate = 0, genres = None):
        self.name = name
        self.age = age
        self.rate = rate
        self.genres = set(genres)

Второй конструктор должен принимать на вход такие параметры: имя, возраст, фильмы. Я предполагаю, что он должен быть реализован с помощью фабричного метода:

@classmethod
def second_constructor(cls, name, age, movies=[])
    genres = set(movies.keys()) #if movies else []
    rate = sum(movies.values())/len(movies.values())
    return cls(name, age, rate = 0, genres = [])

В зависимости от того сколько было передано аргументов при создании экземпляра класса должны использоваться разные конструкторы.

Пример:

n = HollywoodStar("oleg", 21, {"movie1":1, "movie2":2})
print(HollywoodStar.second_constructor(n)) #должен использоваться второй конструктор
n = HollywoodStar("oleg", 21, 1, ["action", "comedy"]) #первый конструктор

Так как изначально срабатывает первый конструктор, то при попытке создания экземпляра класса с 3 переданными аргументами появляется ошибка. Как решить эту проблему?

Ответы

Ответов пока нет.