Как в python обратиться к переменной родительского класса?

Всем привет. Я с глупым вопросом.
Я пытаюсь при создании экземпляров классов поменять значение переменной в родительском классе. Но не знаю как до нее достучаться.
Приведу глупый и короткий пример.

class Main:  # основная функция

    def __init__(self):
        self.ab = AB()  # создаем экзмпляр класса с переменными
        d1 = Dialog1()  # Создаем экзэмпляр класса который должен поменять переменную ab.a
        d2 = Dialog2()  # Создаем экзэмпляр класса который должен поменять переменную ab.b

    def sum(self):
        c = self.ab.a + self.ab.b
        print(c)


class Dialog1:
    def __init__(self):
        ab.a = 5  # !!! Пытаюсь поменять значение в переменной созданом в родительском классе Main


class Dialog2:
    def __init__(self):
        ab.b = 6  # !!! Пытаюсь поменять значение в переменной созданом в родительском классе Main


class AB:
    a = 1
    b = 2

m = Main()


Грубо говоря функция sum должна написать "11"
Я может где то не верно выразился.
Мне это нужно для программки на PyQt. Я из главного окна открываю вручную нарисованные диалоговые окошки, в которых запрашиваю различные данные, и хочу что бы эти данные сохранились в главном окне. (Возможно вы меня поймете)
  • Вопрос задан
  • 6100 просмотров
Решения вопроса 1
@Andy_U
Не очень понял, зачем Вам это надо, но минимальные исправления ниже, причем варианты для Dialog1 и Dialog2 разные, без доп.информации не знаю, как лучше.

class Main(object):  # основная функция

    def __init__(self):
        self.ab = AB()  # создаем экзмпляр класса с переменными
        d1 = Dialog1(self.ab)  # Создаем экзэмпляр класса который должен поменять переменную ab.a
        d2 = Dialog2(self)  # Создаем экзэмпляр класса который должен поменять переменную ab.b

    def sum(self):
        c = self.ab.a + self.ab.b
        print(c)


class Dialog1(object):
    def __init__(self, parent):
        parent.a = 5  # !!! Пытаюсь поменять значение в переменной созданом в родительском классе Main


class Dialog2(object):
    def __init__(self, parent):
        parent.ab.b = 6  # !!! Пытаюсь поменять значение в переменной созданом в родительском классе Main


class AB(object):
    a = 1
    b = 2

m = Main()

print(m.ab.a)
print(m.ab.b)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Родительский класс подразумевает наследование. У вас его нет.
Ответ написан
@balamut108
Py
super - это супер, см. видос на эту тему для Python 3: pythonz.net/videos/34
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы