当前位置: 首页 > 面试题库 >

如何在Python中调用超级构造函数?

魏风华
2023-03-14
问题内容
class A:
    def __init__(self):
        print("world")

class B(A):
    def __init__(self):
       print("hello")

B()  # output: hello

在所有其他与super构造函数一起使用的语言中,都是隐式调用的。如何在Python中调用它?我希望super(self)这是行不通的。


问题答案:

super()在新样式类中返回类似父对象的对象:

class A(object):
    def __init__(self):
        print("world")

class B(A):
    def __init__(self):
        print("hello")
        super(B, self).__init__()

B()


 类似资料:
  • 我有课 我还有一个B级 lombok抛出错误,说它找不到()构造函数,显式调用它。我想让lombok做的是给类b提供注释,这样它就生成了以下代码: 我们在龙目岛有注释吗?

  • 问题内容: 我有一个类A,并写了一个子类B。A只有一个参数化的构造函数。B必须调用A的这个超级构造函数。现在,我想使用一个Object作为参数。该对象应调用B的方法。因此,参数对象必须持有B的引用,或者必须是内部类。 现在,当我想调用构造函数时,……Eclipse说: 在显式调用构造函数时无法引用“ this”或“ super” 我唯一想解决的是设置方法,将“ this”实例注入到参数对象中。我不

  • 说我有以下课程 和 当我调用超级构造函数时,如何保证子构造函数调用“正确”的构造函数?更具体地说,我希望100%确保我传入的三个字符串值确实设置为父级中的正确字段,而不是设置为item1 in的字段。 我知道我可以,例如: 显式创建我自己的所有参数构造函数 在子构造函数中,调用父构造函数的所有setter 但是我只是好奇Lombok是否足够聪明,以某种方式,将子类中的字段设置为父类中正确的字段?

  • 自从spring宣布不推荐使用字段注入后,我开始在我的项目中使用构造函数注入。实际上,代码感觉更漂亮,更严格,我可以接受。但我遇到了一个模式,对我来说有点...怪异和冗长: 我有一个抽象的服务bean类(带有注释),它有2个依赖项,直接注入到构造函数中: 然后,我有多个服务bean类(仍然使用注释)扩展抽象服务。我不知道是否还有其他方法,但我发现在每个子类构造函数中注入父级的依赖关系有点冗长和重复

  • 问题内容: 如何使AB的构造函数使用适当的参数调用A和B的构造函数? 我试过了 但这给我一个错误。 问题答案: 你没有通过。 请注意,如果这种继承层次结构变得更加复杂,则会遇到构造函数无法执行或无法重新执行的问题。外观到(和问题与),并从不要忘记继承如果你在2.x和你的类不从别的继承。

  • 问题内容: 如何使用call_user_func_array调用类的构造函数 这是不可能的: 因为如果构造函数具有参数,则 新的 将失败。 约束:我不控制必须实例化的类,也不能修改它们。 不要问我为什么要做这个疯狂的事情,这是一个疯狂的考验。 问题答案: 您可以像这样使用反射: 从PHP 5.6.0起,也可以将运算符用于此目的。