我在 GitHub 上的私有(private)存储库中阅读一些 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
。所以,我想知道从基 object
继承时使用 super
初始化 Point
对象有什么优点(如果有的话) Python?
最佳答案
在这种特殊情况下没有 object.__init__()
是一个空方法。但是,如果您要从其他对象继承,或者要使用多重继承,请调用 super.__init__()
将确保您的类得到正确初始化(当然假设它们依赖于其父类的初始化)。例如,如果没有这个,Python 的 MRO 就无法发挥其魔力。
关于python - 在类初始化器中使用 super 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629474/