我希望能够对一个类进行子类化,并定义__init__
,但仍然可以运行旧的__init__
。
为了说明,我说有以下课程:
class A(object):
def __init__(self):
self.var1 = 1
class B(A):
def __init__(self)
self.var2 = 2
doInitForA()
我希望能够做到这一点:
instB = B()
print (instB.var1) #1
print (instB.var2) #2
编辑为Ignacio Vazquez-Abrams建议。 (是否可以编辑而不会碰撞?)
答案 0 :(得分:6)
替换
doInitForA()
与
super(b, self).__init__()
答案 1 :(得分:3)
您可能希望查看此问题:Chain-calling parent constructors in python,特别是使用super(b, self).__init__()
方法。
答案 2 :(得分:0)
从a.__init__(self)
拨打a
或导出object
并使用super()
。
答案 3 :(得分:0)
class a:
def __init__(self):
self.var1 = 1
class b(a):
def __init__(self)
self.var2 = 2
a.__init__(self)
如果您使用的是python 3,甚至可以编写super().__init__()
请参阅this有关使用super()
的问题。
答案 4 :(得分:0)
从你的父亲那里打电话给你父亲的父亲:a.__init__(self)
。请注意,您需要将self
作为第一个参数传递。如果父c'tor采用更多参数,请在self
之后传递它们。