Python:如何记住`super`的参数顺序?

7 投票
4 回答
646 浏览
提问于 2025-04-16 00:46

正如标题所说,你是怎么记住super的参数顺序的?有没有什么记忆法我没发现的?

经过多年的Python编程,我还是得查资料 :(

顺便说一下,它的格式是super(Type, self)

4 个回答

5

我不这样做。在Python 3中,我们可以直接写

super().method(params)
10

简单来说,self可选的 - super(Type) 可以让你访问未绑定的父类方法 - 而可选参数总是放在最后面。

11

继承让我想到一种分类层级。在调用super的时候,参数的顺序也是有层级的:先是类,然后是实例。

还有一个想法,灵感来自于~unutbu的回答:

class Fubb(object):
    def __init__(self, *args, **kw):
        # Crap, I can't remember how super() goes!?

构建正确的super()调用的步骤。

__init__(self, *args, **kw)              # Copy the original method signature.

super(Fubb).__init__(self, *args, **kw)  # Add super(Type).
                     /
              -------
             /
super(Fubb, self).__init__(*args, **kw)  # Move 'self', but preserve order.

撰写回答