#25. Множественное наследование | Объектно-ориентированное программирование Python

preview_player
Показать описание

Как работает множественное наследование (multiple inheritance) в Python. Зачем это нужно. Пример использования при реализации идеи минсинов (mixins). Алгоритм обхода базовых классов MRO.

Рекомендации по теме
Комментарии
Автор

как лёгкий пример множественного наследования - молоко(жидкость, еда)
жидкость (вязкость, температура кипения), еда (белки углеводы жиры, калории)

или куртка (одежда, товар)
одежда (размер), товар (цена)

по сути это пересекающиеся круги эйлера

п. с. комент в поддержку видео

rioriocccp
Автор

Ещё один пример - класс Datetime, который наследуется от Date и Time. Иногда нужно работать отдельно с датой, иногда со временем, а иногда и с тем, и с другим.

sxsvkmm
Автор

Сначала у меня были вопросы, а потом я просто еще раз посмотрела видео... И оказывается все понятно! Вот что значит: "внимательно слушай учителя и будет тебе счастье".

nityull
Автор

очень интересно и познавательно для меня это наверное самый лучший и интересный урок, так как скоро проект в Джанго буду делать, а там много миксинчиков играет роль, благодарю наставник

nomadicus
Автор

Сергей, спасибо за урок! Очень нравится Ваш курс!

siarheiulas
Автор

Читал про миксины в 'Книге рецептов' Бизли, Джонс. Довольно специфическая штука. Наверное стоит её отдельно от множественного наследия рассматривать.

nrmaLman
Автор

такая полезная инфа, а так мало просмотров, очень жаль

mrfang
Автор

А когда будет продолжение этой темы разговора подробнее ⁉️

ifdjfyy
Автор

Сергей спасибо огромное за видео! Материал подаете очень доступно и понятно. Не многие могут подать столь сложный материал в доступной форме. Но вопросы все таки есть: когда вы рассказываете о порядке перебора метода init 6:32 используете слайд на котором рисуете стрелки, но Ваши стрелки не совпадают со стрелками слайда. Ваше рассуждения не вызывают вопросов, но тогда получается ошибка в стрелках на слайде?

dmitrykhomyakov
Автор

очень странно, у меня почему-то save_cell_log сразу сработал. может это как-то от версии зависит?

jur
Автор

3:14 Сергей (простите меня) - так делать тоже не желательно . Вы весь курс повторяли, что это плохой тон и подобное следует реализовывать через определение класса (либо вводить метод класса для обработки ID).

gayratsaidakhmedov
Автор

Спасибо за урок, подскажите как через super() вызвать метод print_info() именно из Mixinlog?

yuraliashenko
Автор

Сергей доброго дня, какие мысли у вас о том что о наследовании говорят как о плохом примере использования при построении архитектуры, можете рассказать о паттернах в вашем видении!

daniyarutegilishev
Автор

Вы это видео выложили в общий доступ. Он же платный, по ссылке только должен работать)

chayok
Автор

Сергей, здравствуйте. Такой вопрос: как так выходит, что порядок MRO выводит: Notebook, Goods, MixinLog, MixinLog2, если у вас в примере видел, что инициализатор Goods выводит сообщение последним? Какое-то несоответствие тому, что выводит инициализатор и порядок MRO.

Munchen
Автор

А верно, что метод super() всегда возвращает вспомогательный класс для работы методов класса, идущего вторым в коллекции __mro__?

ukpimcm
Автор

а что если в конструкторе основного базового класса принимать ещё и kwargs, а потом их передавать в конструкторы всех следующих классов, тогда по идее каждый будет брать свои аргументы и порядок не будет иметь значение

youtubeyoutube
Автор

Здравствуйте, возник один вопрос : не получится ли для последней цели из видео написать что-то вроде super().super().print_info()? Просто интересно. Спасибо за видео!

Cygni
Автор

получается можно сказать, что миксины при необходимости, расширяют функционал базового класса? допустим, на основе базы создано множество дочерних, а к только к некоторым из низ нужно добавить доп методы, тогда к этим класса добавляют наследование от определенного миксина

zakirovio
Автор

5:39 - и все-таки Синьору пришлось лезть руками в базовый класс и вписывать в строку №3 код "инициализатора родительского класса"
Это допустимая погрешность в случаях, когда "Синьора просят добавить функционал без вмешательства в базовый класс"?

johnmazepa