gpt4 book ai didi

syntax - 使用 ParentClass.method(self, *args, **kwargs) 或 super(MyClass, self).method(*args, **kwargs)

转载 作者:太空狗 更新时间:2023-10-30 02:34:54 26 4
gpt4 key购买 nike

当一个类继承自单个类时,调用父方法的首选方式是什么?我知道有两种调用父方法的方法。

选项 1:

ParentClass.method(self, *args, **kwargs)

选项 2:

super(MyClass, self).method(*args, **kwargs)

在处理多重继承时,选项 1 显然很有意义;我们要具体调用某个类的方法。但是在处理单一继承时,任何一种方法都可行,尽管选项 1 可能在未来更安全。但是有什么东西(比如 PEP)说明何时使用哪种样式吗?

最佳答案

首先,如果您有旧式类(class),则需要使用选项 1

如果不是,则取决于代码:

  • 如果父类(super class)(或子类)使用super(或什么都不用),您可以安全地使用super。这也意味着您的子类必须使用super 而不是Parent.method(self, ...)
  • 如果父类(super class)(或子类)使用旧的Parent.method(self, ...),也使用它。

http://fuhm.net/super-harmful/ 有一个很好但更详细的解释.简短摘要(甚至比我上面的解释还要短):

  • Subclasses must use super if their superclasses do
  • Superclasses must use super if their subclasses do (sometimes)

关于syntax - 使用 ParentClass.method(self, *args, **kwargs) 或 super(MyClass, self).method(*args, **kwargs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com