python как унаследовать параметр во все классы
у меня есть дочерние классы, всего их 4 в качестве примера один - child1().
Также есть главный класс, который инициализируется, и в который передается некий param.
Вопрос 1: Как при инициализации главного класса прокинуть/передать param в дочерние классы, так что бы дочерний класс мог узнать значение из главного как на примере printParam()?
Вопрос 2: Таких параметров будет около 10-ти, также у дочернего класса может быть еще дочерний класс.
Что стоит почитать/посмотреть чтобы лучше разобраться в этом?
class child1(): #Унаследовать param из main класса
def __init__(self):
self.param = param
def printParam(self):
print(self.param)
class MainClass(child1):
def __init__(self, param):
self.param = param
mn = MainClass(param='param')
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
class Child1():
def __init__(self, parent=None):
super().__init__()
self.objectName = 'child1'
self.param = parent.param
def print_param(self):
print(f'{self.objectName:>8}: {self.param}')
class Child2_1():
def __init__(self, parent=None):
super().__init__()
self.objectName = 'child2_1'
self.param = parent.param
def print_param(self):
print(f'{self.objectName:>8}: {self.param}')
class Child2():
def __init__(self, parent=None):
super().__init__()
self.objectName = 'child2'
self.param = parent.param
self.child2_1 = Child2_1(parent)
def print_param(self):
print(f'{self.objectName:>8}: {self.param}')
class MainClass():
def __init__(self, param):
self.param = param
self.child1 = Child1(self)
self.child2 = Child2(self)
mn = MainClass(param='param777')
mn.child1.print_param()
mn.child2.print_param()
mn.child2.child2_1.print_param()
Update:
class Child1():
def __init__(self, parent=None):
super().__init__()
self.objectName = 'child1'
self.parent = parent
def print_param(self):
print(f'{self.objectName:>8}: {self.parent.param}')
class Child2_1():
def __init__(self, parent=None):
super().__init__()
self.objectName = 'child2_1'
self.parent = parent
def print_param(self):
print(f'{self.objectName:>8}: {self.parent.param}')
class Child2():
def __init__(self, parent=None):
super().__init__()
self.objectName = 'child2'
self.parent = parent
self.child2_1 = Child2_1(parent)
def print_param(self):
print(f'{self.objectName:>8}: {self.parent.param}')
class MainClass():
def __init__(self, param):
self.param = param
self.child1 = Child1(self)
self.child2 = Child2(self)
mn = MainClass(param='param777')
mn.child1.print_param()
print()
mn.param = 555
mn.child2.print_param()
mn.child2.child2_1.print_param()
mn.child1.print_param()
print()
mn.param = 567
mn.child2.child2_1.print_param()

