我还是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)
虽然这不起作用,但仍然没有错误。 是否有任何简短的方法来初始化子类中的父类或从父级获取所有参数?
答案 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__
内的父级