Почему атрибут не унаследован после того, как я вызвал super (...) для подкласса? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить атрибут класса из подкласса. Атрибут присваивается значению при инициализации суперкласса. См .:

class A:
    _b = None
    def __init__(self, a, b):
        self.a = a
        _b = b

class B(A):
    def __init__(self, a, b):
        super(B,self).__init__(a=a, b=b)
        print('Try to get _b value:', self._b)

B(4,5)

При инициализации класса B вызывается super (...). init , поэтому должен вызываться конструктор класса A. Это приводит к тому, что b присваивается A._b. Однако, когда я пытаюсь получить self._b из класса B, кажется, что он не инициализирует A, потому что self._b равно None.

1 Ответ

3 голосов
/ 16 апреля 2020

Ваш A.__init__ не инициализирует self._b, он инициализирует локальную переменную с именем _b. Поскольку это локальная переменная, она исчезает, как только эта функция возвращает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...