0

尝试学习 Python/编程,我有一个关于类/继承的问题。我创建了一个“Media”类,我想创建一个名为“Movie”的实例来从 Media 继承。对于媒体,我将出版商硬编码为始终等于“环球影城”,所以我想让我的电影打印出出版商并让它打印出“环球影城”,但我不知道如何实现这一点。我在下面有我的代码并尝试了各种语法,但无法弄清楚。

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()
4

1 回答 1

1

不传递任何参数super.__init__()。正如上面评论中提到的,movie_data似乎与基类中的任何参数都不一致,因此您不需要将这些参数发送到基类,否则会发生意外结果(例如您self.publisher返回dictof 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()

在此处输入图像描述

于 2019-07-01T02:47:11.250 回答