如何覆盖基本构造函数参数

How to override base constructor arguments

如果我创建一个覆盖另一个 class 的 python class,__init__ 会从基础 class 调用吗?如果我想为它指定参数怎么办?

基础class:

class bar(object):
    def __init__(self, somearg = False):
        # ...

新建class

class foo(bar):
    def __init__(self)
       # ???

我想要什么?

obj = foo() # somearg = True

不,未调用基础 class __init__ 方法,因为您的派生 class 提供了该方法的新版本。

您将通过 super() 代理显式调用父 __init__ 方法并传入参数以设置不同的默认值:

class foo(bar):
    def __init__(self)
        super().__init__(somearg=True)