Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python类和继承。如何使实例具有主类的参数_Python 3.x_Class_Inheritance - Fatal编程技术网

Python 3.x Python类和继承。如何使实例具有主类的参数

Python 3.x Python类和继承。如何使实例具有主类的参数,python-3.x,class,inheritance,Python 3.x,Class,Inheritance,试图学习Python/编程,我有一个关于类/继承的问题。我创建了一个类Media,我想创建一个名为Movie的实例来继承Media。对于媒体,我把出版商硬编码为始终等于“环球影城”,所以我想让我的电影打印出出版商,并让它打印出“环球影城”,但我被困在如何实现这一点上。我在下面有我的代码,并尝试了各种语法,但无法理解这一点 class Media: def __init__(self, publisher = 'Universal Studios', market = 'USA'):

试图学习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()
在super.\uuu init\uuu中不传递任何参数。如上所述,movie_数据似乎与基类中的任何参数都不一致,因此您不需要将这些参数发送到基类,否则会出现意外结果,例如您的self.publisher返回movie_数据的dict:

然后执行printself.publisher,因为publisher是类实例的属性,所以需要使用self对其进行限定


我不确定我是否明白你在问什么。目前,您正在将movie_数据设置为电影实例的发布者,因为这是您传递给super的第一个参数。如果你不想这样做,你需要传递一些其他的东西,也许什么都不传递。此外,你需要确保你明智地调用super。您的基类接受两个参数,但您只传递电影中的Kwarg,而电影中的Kwarg甚至没有在super中使用。环球影城是所有媒体类实例的发布者吗?还是仅适用于所有电影实例?如果是后者,那么您不希望将其硬编码为基类中的默认值。我希望环球影城对所有媒体类进行硬编码,因此我不确定为此需要在init语句中添加哪些内容。我希望Movie类与Media类具有相同的publisher/market值,但是还要添加新的Movie_数据参数。
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()