Классы Python и наследование.Как получить экземпляры для аргумента основного класса - PullRequest
0 голосов
/ 01 июля 2019

Пытаюсь изучать Python / программирование, и у меня возникает вопрос о классах / наследовании.Я создал класс «Media» и хотел создать его экземпляр «Movie» для наследования от Media.Для СМИ у меня есть издатель, жестко закодированный, чтобы всегда быть равным «Universal Studios», поэтому я хотел, чтобы мой фильм распечатал Publisher и распечатал «Universal Studios», но я застрял в том, как этого добиться.У меня есть мой код ниже и пробовал различный синтаксис, но не могу понять это.

class Media:
    def __init__(self, publisher = 'Universal Studios', market = 'USA'):
        self.publisher = publisher
        self.market = market

    def get_media_info(self):
        print(self.publisher, self.market)
        return None

class Movie(Media):
    def __init__(self, movie_data):
        super().__init__(movie_data)
        self.movie_data = movie_data

    def test(self):
        print(publisher)

test = Movie(movie_data = {'title': 'one', 'rating': 'two'})
test.test()

1 Ответ

1 голос
/ 01 июля 2019

не передавать аргументы в super.__init__().Как упоминалось в комментариях выше, movie_data не соответствует ни одному из аргументов в базовом классе, поэтому вам не нужно отправлять эти аргументы в базовый класс, иначе произойдет непредвиденный результат (например, ваш *).1003 * возвращает dict из movie_data:)

А затем выполните print(self.publisher), поскольку publisher является свойством экземпляра класса, его необходимо квалифицировать как self.

class Media:
    def __init__(self, publisher = 'Universal Studios', market = 'USA'):
        self.publisher = publisher
        self.market = market
    def get_media_info(self):
        print(self.publisher, self.market)
        return None

class Movie(Media):
    def __init__(self, movie_data):
        super().__init__()
        self.movie_data = movie_data
    def test(self):
        print(self.publisher)

m = Movie(movie_data = {'title': 'one', 'rating': 'two'})
m.test()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...