Использование функции super () в Python 3.6

Когда я пытаюсь:

class A:
    def __init__(self):
        self.flag = False

    def check_flag(self):
        if self.flag: return True
        else: return False

    def create(self):
        b = B()
        b.foobar()

class B(A):
    def __init__(self):
        self.foo = 0

    def foobar(self):
        while super().check_flag() == False:
         `print("Works"`)


if __name__ == "__main__":
    a = A()
    a.create()

Я получаю сообщение об ошибке: AttributeError: объект 'B' не имеет атрибута 'flag'

Я в основном хочу, чтобы объект B вызывал функцию из своего конкретного родительского объекта A. Что я здесь делаю не так?

Обновлено: я должен указать, что флаг родительского объекта может быть изменен другой функцией, поэтому дочерний объект должен постоянно проверять, каков статус этого флага. Я могу попробовать использовать потоки, но я уверен, что есть более простой способ использовать super ().

Вы должны вызвать конструктор A из B.

Aran-Fey 08.04.2018 20:41

Вы все равно не должны звонить в super().check_flag(), вы должны звонить в self.check_flag().

Daniel Roseman 08.04.2018 20:53

Пожалуйста, проверьте повторяющийся отмеченный вопрос, первый ответ показывает, как инициализировать конструктор родительского класса (__init__).

Munim Munna 09.04.2018 11:13
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
45
0

Другие вопросы по теме