【问题标题】:Super in this case makes no sense to me在这种情况下,超级对我来说毫无意义
【发布时间】:2021-03-06 05:30:27
【问题描述】:
class SimpleRoundedCorners(QWidget):
    def __init__(self):
        super(SimpleRoundedCorners, self).__init__()
        self.initUI()

这对我来说毫无意义。我已经阅读了 super() 的工作原理,也许我在对象方面还不够好,无法掌握它。这似乎是一个非常多余的电话。为什么我在同一个对象上调用了两次 init?

【问题讨论】:

标签: python-3.x


【解决方案1】:

在 OOP 中,super() 对于多重继承的目的非常有用。它使您可以访问超类中的方法和属性,以便在子/子类中使用,从而节省大量时间和精力。

第二个init 调用用于从基类/子类访问超类。在哪里传入超类的init 构造函数所需的参数;这样,当您实例化基类/子类时,您只传递 its init 构造函数所需的参数,而不是超类的 init 构造函数所需的参数。一个很好的例子是查看answer 中的实现。

此外,您可以只写super().__init__() 而不显式引用基类。

【讨论】:

  • 谢谢。在用你的解释和链接重新阅读 super() 定义之后,它完全有意义。
猜你喜欢
  • 2017-11-17
  • 2015-06-19
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多