我有两节课:
class Parent(object):
def __init__(self):
self.a = 0
self.b = self.a + 1
class Child(Parent):
def __init__(self):
super().__init__()
self.a = 1
print(Child().b)
输出为1
(0+1
),但我希望有2
(1+1
)。如何获得这样的结果?
答案 0 :(得分:0)
如果未提供参数,则可以在父类中使用key word argument
来设置a
的值:
class Parent(object):
def __init__(self, a=None):
if a is None:
self.a = 0
self.b = self.a + 1
class Child(Parent):
def __init__(self):
self.a = 1
super().__init__(self.a)
parent = Parent()
child = Child()
print(parent.a, parent.b)
print(child.a, child.b)
0 1
1 2
另一种方法可以使用类变量:
class Parent(object):
a = 0
def __init__(self):
self.a = self.__class__.a
self.b = self.a + 1
class Child(Parent):
a = 1
def __init__(self):
super().__init__()
parent = Parent()
child = Child()
print(parent.a, parent.b)
print(child.a, child.b)
0 1
1 2
在上面,使用类变量,您完全可以在子类中没有__init__
方法:(这可能或可能不适用于您的实际用例)
class Parent(object):
a = 0
def __init__(self):
self.a = self.__class__.a
self.b = self.a + 1
class Child(Parent):
a = 1
答案 1 :(得分:-1)
在a
之外分配Parent.__init__
属性:
class Parent(object):
a = 0
def __init__(self):
self.b = self.a + 1
class Child(Parent):
def __init__(self):
self.a = 1
super().__init__()
print(Child().b)