如何覆盖基本构造函数参数
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)
如果我创建一个覆盖另一个 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)