Python:你怎么记得`super`的参数的顺序?

Dav*_*ver 7 python super

正如标题所说,你怎么记得super论证的顺序?我错过了什么地方的助记符?

经过多年的Python编程,我仍然要查找它:(

(记录,它是super(Type, self))

FMc*_*FMc 11

继承让我想到了一个分类层次结构.并且参数的顺序super是分层的:首先是类,然后是实例.

另一个想法,灵感来自~unutbu的答案:

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

建立正确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.
Run Code Online (Sandbox Code Playgroud)


Joc*_*zel 10

简单地记住,它self可选的 - super(Type)允许访问未绑定的超类方法 - 并且可选的参数总是最后的.


ken*_*ytm 5

我不.在Python 3中我们可以写

super().method(params)
Run Code Online (Sandbox Code Playgroud)