我正在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
对象有什么好处(如果有的话)?
答案 0 :(得分:1)
在这种特殊情况下没有,因为object.__init__()
是一个空方法。但是,如果您要从其他东西继承,或者如果您要使用多重继承,则调用super.__init__()
将确保您的类得到正确初始化(当然,它们依赖于父类的初始化)。没有它,Python的MRO就不能做它的 magic ,例如。