python - 在类初始化器中使用 super 的目的是什么?

标签 python object

我在 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/

相关文章:

python - 将 json 发布到露天网站 api 时出现错误 500

python - 用 numpy 数组的数据填充 Pandas 数据框列的前导零

python - 播放歌曲后如何让pygame退出

python - 使用 Pandas 合并两个 DataFrame

javascript - 警报向我显示什么属性?

Python 时区差异

ios - 操作对象数组时出错

vba 变体 : how to handle Class vs. 基本类型

javascript - 获取数组中的对象