导致在子类中初始化父类的要求是什么?

时间:2016-05-24 16:19:52

标签: python inheritance initialization subclassing

我还是OOP的新手。

在子类的实例中,我想使用在初始化父类时设置的参数:

class parent():
    def __init__(self, config):
        self._config = config

class child(parent):  
    print self._config

x = "Hello"
c = child(x)

这不起作用,因为自身未知而引发错误。我是否真的需要每次从父类复制完整的__init__块?我看到在某些情况下可以在没有__init__块的情况下触发初始化:

class parent():
    def __init__(self, config):
        self._config = config

class child(parent):  
    # Nonsense since not itarable, but no error anymore
    def next(self):
        print self._config

x = "Hello"
c = child(x)

虽然这不起作用,但仍然没有错误。 是否有任何简短的方法来初始化子类中的父类或从父级获取所有参数?

3 个答案:

答案 0 :(得分:1)

x = "Hello"
c = child(x)

此代码确实创建了child的实例,其中包含_config = "Hello"

然而,它确实是全部。它不会打印 _config的值,您似乎期待它。

如果您希望__init__函数打印self._config的值,则必须添加代码才能执行此操作。

答案 1 :(得分:1)

您可以简单地调用父 __ init __ ,这是常见做法:

class child(parent):
    def __init__(self, config):
        super(child, self).init(config)
        print self._config

答案 2 :(得分:1)

class parent:
    def __init__(self, config):
        self._config = config

class child(parent):

    def __init__(self,config):
        parent.__init__(self,config)

    def next(self):
        print self._config

x = child("test")
x.next() # prints test

要传递给父级的所有参数必须传递给子级以初始化子级__init__内的父级