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

Python:继承超类__init__

敖硕
2023-03-14
问题内容

我有一个带有很多__init__参数的基类:

class BaseClass(object):
    def __init__(self, a, b, c, d, e, f, ...):
        self._a=a+b
        self._b=b if b else a
        ...

所有继承类都应运行__init__基类的方法。

我可以__init__()在每个继承的类中编写一个将调用超类的方法__init__,但这将是严重的代码重复:

class A(BaseClass):
    def __init__(self, a, b, c, d, e, f, ...):
        super(A, self).__init__(a, b, c, d, e, f, ...)

class B(BaseClass):
    def __init__(self, a, b, c, d, e, f, ...):
        super(A, self).__init__(a, b, c, d, e, f, ...)

class C(BaseClass):
    def __init__(self, a, b, c, d, e, f, ...):
        super(A, self).__init__(a, b, c, d, e, f, ...)

...

自动调用超类的最Pythonic方法是__init__什么?


问题答案:
super(SubClass, self).__init__(...)

如果有助于解决您的噩梦,请考虑使用 args和* kw。



 类似资料:
  • 请建议应用继承时如何使用。 我有一个抽象类和具体的。应该是不可变的。将放在两者上会导致两个错误: null 我很乐意删除并使用构建器方法,但我正在重构一个公共库(试图优化模型类),我不希望在我的客户端上出现编译错误。 我还发现了解释第二个错误的这个问题。但其意图的逻辑并不清楚https://github.com/rzwitserloot/lombok/issues/945

  • 在面向对象的程序设计中,定义一个新的 class 的时候,可以从某个现有的 class 继承,新的 class 称为子类,而被继承的 class 称为基类、父类或超类。 Python 中继承的语法如下: class Parent: pass class Child(Parent): pass 在第 1 行,定义了父类 Parent; 在第 4 行,定义了子类 Child,语法

  • 问题内容: 是否有理由要声明类声明object? 我刚刚找到了执行此操作的代码,但找不到很好的理由。 问题答案: 是否有理由要声明类声明object? 在Python 3中,除了Python 2和3之间的兼容性之外,没有任何理由。在Python 2中,原因很多。 Python 2.x故事: 在Python 2.x(从2.2开始)中,有两种类型的类,取决于是否存在object作为基类的类: “经典”

  • 问题内容: 所有自定义类/对象的超类是否隐式继承?我以为Java不支持多重继承。我问的原因是,如果我已经从我的自定义类中的另一个类继承了,并且Java再次在它之上强制隐式继承,这不是多重继承吗? 另外,java.lang.class类还是所有自定义类/对象的超类吗?如果没有,如何在Java反射中获取传递的任何类的类类型,或如何在任何对象上调用isInstance? 问题答案: 一切都是对象,说您可

  • 问题内容: 假设我有以下两个课程 如果我启动一个beta类型的新对象,如何执行在alpha类而不是beta中找到的逻辑?我可以使用<-我想知道是否可行。 Eclipse IDE中的自动键入功能使我可以选择从class 或class中进行选择。 问题答案: 你可以做: 注意,这是对父级的引用,但是super()是它的构造函数。

  • 类继承是一个类扩展另一个类的一种方式。 因此,我们可以在现有功能之上创建新功能。 “extends” 关键字 假设我们有 class Animal: class Animal { constructor(name) { this.speed = 0; this.name = name; } run(speed) { this.speed = speed;