Python:你如何记住“super”参数的顺序?

发布于 2024-09-07 17:59:44 字数 140 浏览 2 评论 0原文

正如标题所说,你如何记住super的参数顺序?我是否遗漏了某个助记符?

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

((郑重声明,它是 super(Type, self)

As the title says, how do you remember the order of super's arguments? Is there a mnemonic somewhere I've missed?

After years of Python programming, I still have to look it up :(

(for the record, it's super(Type, self))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

疯狂的代价 2024-09-14 17:59:44

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

另一个想法,受到〜unutbu的答案的启发:

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

Steps in build up a right super() call。

__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.

Inheritance makes me think of a classification hierarchy. And the order of the arguments to super is hierarchical: first the class, then the instance.

Another idea, inspired by the answer from ~unutbu:

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

Steps in building up a correct super() call.

__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.
友欢 2024-09-14 17:59:44

只需记住 self可选 - super(Type) 提供对未绑定超类方法的访问 - 并且可选参数始终位于最后。

Simply remember that the self is optional - super(Type) gives access to unbound superclass methods - and optional arguments always come last.

﹏半生如梦愿梦如真 2024-09-14 17:59:44

我不知道。在Python 3中我们可以这样写

super().method(params)

I don't. In Python 3 we can just write

super().method(params)
老旧海报 2024-09-14 17:59:44

通常,super 用于class 定义内部。在那里,(同样典型地),super 的第一个参数应该始终是class 的名称。

class Foo(object):
    def __init__(self,*args,**kw):
        super(Foo,self).__init__(*args,**kw)

Typically, super is used inside of a class definition. There, (again typically), the first argument to super should always be the name of the class.

class Foo(object):
    def __init__(self,*args,**kw):
        super(Foo,self).__init__(*args,**kw)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文