Вы можете использовать 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