Обновить

Комментарии 5

 мы говорим: «Сначала создадим общий шаблон "Враг" с базовыми характеристиками

Не "мы" говорим, а хренвастенький архитектор говорит. А мы говорим- создадим класс "сущность" или "npc", а друг он или враг, дракон или библиотекарша- разберемся позднее))

Шучу, если что. Хорошая статья.

Для чего в классе Skeleton переопределен метод init без добавления новой функциональности?

Сразу видно, что экземпляр класса Skeleton создаётся с полным набором свойств родительского класса и код остаётся открытым для изменений

Статья хорошая. Но касаясь работы функции super у меня возникают смутные сомнения, в том что она даёт доступ к функциям РОДИТЕЛЬСКОГО класса! На самом деле в раннем питоне к функциям родительского класса так же обращались, но использовали при этом ИМЕНА родительского класса и это работало... кхм, работало почти всегда, а иногда нет ))). Почему же ввели super? и что она делает? Она предоставляет доступ к функциям первого ПРЕДШЕСТВУЮЩЕГО по ИЕРАРХИИ класса и это НЕ ВСЕГДА будет родительский класс!!! Да в случае одиночного наследования это всегда родительский класс. А вот в случае множественного наследования это не всегда так. Да в дальнейшей цепочке вызовов, скорее всего будет вызвана и функция родительского класса, но не следует забывать, что это именно будет цепочка вызовов, если функции классов правильно спроектированы и обеспечивают эту цепочку.

Да, все верно, super() - это механизм, который ищет следующий класс в цепочке MRO.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации