说我有以下课程:
class Base(object):
def __init__(self, **kwargs):
# some constructor based on the kwargs
pass
class Child(Base):
# the method I would like to avoid
def __init__(self, **kwargs):
super(Child, self).__init__(**kwargs)
有没有办法避免在Child类中调用__init__
和super
的样板?在这个包中,用户会经常从基类继承,但我希望每次都使用__init__
和super
来避免它们,特别是因为模式永远不会改变。但是它仍然需要接受关键字参数。
我想这可能是使用__new__
或元类,但必须有一个更简单的方法在基类中使用@classmethod
之类的东西?
编辑:使用python3
答案 0 :(得分:1)
如果您不需要在子类中进行特定初始化,则可以省略__init__
:
class Base:
def __init__(self, **kwargs):
# some constructor based on the kwargs
pass
class Child(Base):
pass
否则,你应该这样使用它:
class Base(object):
def __init__(self, **kwargs):
# some constructor based on the kwargs
pass
class Child(Base):
def __init__(self, **kwargs):
super().__init__(**kwargs)
#...additional specific initialization