首页 >后端开发 >Python教程 >如何在多重继承中正确调用父类 __init__` 方法?

如何在多重继承中正确调用父类 __init__` 方法?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-01 05:36:10445浏览

How Do I Properly Call Parent Class `__init__` Methods in Multiple Inheritance?

通过多重继承调用父类init

在使用多重继承的场景中,确保调用所有父类构造函数。两种常见的方法是:

  • ParentClass.__init__(self)(旧式)
  • super(DerivedClass, self).__init__() (较新风格)

但是,如果父类不遵循一致的约定,这些方法可能会失败。

确定正确的方法

适当的方法取决于基类是否设计为多重继承:

1。独立基类

  • 不适合多重继承。
  • 使用以下任一方法手动调用每个父构造函数:

    • 没有 super: Foo.__init__(self), Bar.__init__(self)
    • 与 super: super().__init__() (对于 Foo 之前的所有构造函数),super(Foo, self).__init__(bar) (对于Foo 之后的所有构造函数)

2. Mixins

  • 专为多重继承而设计。
  • 在 mixin 类中使用 super().__init__(),它会自动调用下一个构造函数。
  • 首先继承 mixin,例如 class FooBar(FooMixin,吧)。

3。为协作继承而设计的类

  • 与 mixin 类似,但所有参数都作为关键字参数传递。
  • 在所有类中调用 super().__init__()。
  • 基类的顺序不

其他注意事项

  • 对于对象子类,避免调用 super().__init__()。
  • 对于独立类,如果直接从对象继承,则始终提供一个空构造函数(例如,class Base(object): def __init__(self): pass)。

最终,正确的实现取决于所涉及的类。如果一个类是为多重继承而设计的,则应该相应地记录它。否则,假设它不是为此类场景设计的。

以上是如何在多重继承中正确调用父类 __init__` 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn