Как Python находит свойства и методы: продолжение
Давайте проанализируем пример в редакторе.
Оба класса: Level1
и Level2
определяют метод с именем fun()
и свойство с именем var
. Означает ли это, что объект класса Level3
сможет получить доступ к двум копиям каждого объекта? Вовсе нет.
Объект, определенный позже (в смысле наследования), переопределяет тот же объект, определенный ранее. Вот почему код дает следующий вывод:
200 201
output
Как видите, переменная класса var
и метод fun()
из класса Level2
переопределяют объекты с одинаковыми именами, полученные из класса Level1
.
Эту функцию можно намеренно использовать для изменения поведения классов по умолчанию (или ранее определенного), когда любой из его классов должен действовать не так, как его предок.
Можно также сказать, что Python ищет объекты снизу вверх и полностью удовлетворен первым объектом с желаемым именем.
Как это работает, когда у класса есть два предка, предлагающих один и тот же объект, и они лежат на одном уровне? Другими словами, что Вы должны ожидать, когда класс появляется с использованием множественного наследования? Давайте посмотрим на это.