在类初始化程序中使用super的目的是什么?

时间:2017-06-19 11:34:05

标签: python object

我正在GitHub的私有存储库中读取一些Python代码,并找到了类似下面的类:

class Point(object):
    '''Models a point in 2D space. '''

    def __init__(self, x, y):
        super(Point, self).__init__()
        self.x = x
        self.y = y

    # some methods

    def __repr__(self):
        return 'Point({}, {})'.format(self.x, self.y)

我确实理解在初始化类时使用关键字super的重要性和优势。就个人而言,我发现__init__中的第一个语句是冗余的,因为所有Python类都继承自object。那么,我想知道在继承Python中的基类Point类时使用super初始化object对象有什么好处(如果有的话)?

1 个答案:

答案 0 :(得分:1)

在这种特殊情况下没有,因为object.__init__()是一个空方法。但是,如果您要从其他东西继承,或者如果您要使用多重继承,则调用super.__init__()将确保您的类得到正确初始化(当然,它们依赖于父类的初始化)。没有它,Python的MRO就不能做它的 magic ,例如。