在解释super() 之前,我们首先需要了解多重继承的概念。
多重继承:意味着一个子类可以继承多个父类。
在以下示例中,子类从父类继承了属性方法。
class Father: fathername = "" def father(self): print(self.fathername) class Mother: mothername = "" def mother(self): print(self.mothername) class Child(Father, Mother): def parent(self): print("Father :", self.fathername) print("Mother :", self.mothername) s1 = Child()s1.fathername = "Srinivas" s1.mothername = "Anjali" s1.parent()
输出结果
Father : Srinivas Mother : Anjali
在下面的示例中,显示了(即) super()具有多个继承
super() :super函数可用于替换对的显式调用
class Father: fathername = "" def father(self): print(self.fathername) class Mother: mothername = "" def mother(self): print(self.mothername) class Child(Father, Mother): def parent(self): super().__init__() print("i am here") print("Father :", self.fathername) print("Mother :", self.mothername) s1 = Child()s1.fathername = "Srinivas" s1.mothername = "Anjali" s1.parent()
当您运行程序时,输出将是
输出结果
i am here Father : Srinivas Mother : Anjali
问题内容: 我只是在研究一些更高级的python主题(至少对我来说是高级的)。我现在正在阅读有关多重继承以及如何使用super()的信息。我或多或少了解超级函数的使用方式,但是 (1)像这样做是 怎么回事?: 关于super(),关于Python Warts的Andrew Kuchlings论文 说: 当Derived类继承自多个基类并且其中一些或全部具有 init 方法时,super()的用法也
问题内容: 我在使用Python进行面向对象的编程方面非常陌生,并且在理解函数(新样式类)时遇到困难,特别是在涉及多重继承时。 例如,如果你有类似的东西: 我不明白的是:该类会继承两个构造函数方法吗?如果是,那么哪个将与一起运行,为什么? 而如果要运行另一个呢?我知道这与Python方法解析顺序有关。 问题答案: Guido自己在他的博客文章(包括两次较早的尝试)中对此进行了合理的详细说明。 在你
问题内容: 在Python中,如何选择要调用的Parent方法?假设我要调用父ASDF2的方法。似乎我必须在super()中指定 ASDF1 。如果要调用ASDF3 ,则必须指定 ASDF2 吗? 在我看来是疯子。我究竟做错了什么? 问题答案: 那不是为了什么 超级基本上是按照特定顺序选择一个(或全部)父母。如果您只想调用单亲方法,请执行此操作
问题内容: 问题的简短摘要:我有一个父类,并由子类扩展。 该子类使用super调用Parent的构造函数: 我想知道是否可以在Grandchild类的构造函数中调用super()方法来扩展Child类: 问题答案: super()在继承上一级调用构造函数,如果存在无参数的构造函数,则将隐式调用该构造函数。 对象是从继承的最高层初始化的,在您的情况下是对象>父>子>孙。 从文档中:
假设我有对象:bob1,cob2。我想为类B和C建立一个析构函数,但我不确定如何销毁B.BB和C.CC以及如何访问它们。还有,有没有办法让我做到这一点,而不让类成为a类的朋友?
我是相当新的反应性编程,我使用去年Spring5 Webflux框架和玩这样的项目Reactor。我正面临一个问题,我想在继承模式中使用Mono: 我怎样才能做到这一点?我是不是做了坏事? 非常感谢