在子类'__init__中设置Super的属性

时间:2011-01-26 23:46:28

标签: python inheritance properties

我遇到了一个问题,我需要一个带有香草制定者的自定义吸气剂。当我尝试在子类的__init__中设置属性时会发生问题。如果我将super的{​​{1}}放在最后,它将覆盖__init__类中的集合。

显然让Child运行它super首先修复了这个问题,我已将__init__放入assert的{​​{1}}以确保_x已经初始化。

我的问题是我是否做了明显错误的事情。在setter中有一个断言对我来说很笨拙。

注意:我以前没有在init中初始化_x,直到pylint对我大喊大叫。

Parent

1 个答案:

答案 0 :(得分:4)

我个人更喜欢以下解决方案:

class Parent(object):
    def __init__(self, x=None):
        self._x = x

class Child(Parent):
    def __init__(self, x):
        super(Child, self).__init__(x)