Полиморфизм в Python. Что такое Утиная типизация (ducktyping)
HTML-код
- Опубликовано: 19 окт 2022
- Сегодня разговор пойдет про третьего кита в ООП - Полиморфизм.
Как обычно нас будет интересовать, что это такое и зачем это нужно программисту.
Если не вдаваться в теории, то полиморфизм о котором вам нужно знать и о котором спросят на собеседовании - это механизм, позволяющий выполнять один и тот же код по-разному.
Утиная типизация в свою очередь означает механизм, когда для работы во главу угла ставится поведение, а не принадлежность к какому-либо классу.
👣ООП Первые шаги • Первые шаги в ООП: кла...
🐣ООП: Наследование (Inheritance) • ООП: Наследование (Inh...
💊ООП: Инкапсуляция в Пайтон • ООП: Инкапсуляция в py...
Читать:
"Python 3 Object-oriented" by Dusty Phillips
"Learning Python", Fifth Edition by Mark Lutz
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm
№2 Не так давно наткнулся на ваш канал. Господи храни Королеву что это произошло. Уже все видео пересмотрел)
В связи с тем что давно не было активности на канале, я впал в депрессию и бесконечно молча про себя говорил " на что же Python Russian нас покинул..."
Родные уже к бабкам водили.. Не помогло
Излечился инъекцией(внутривенно) нового видео! Спасибо!
Как же ты/вы круто объясняешь! смотрю запоем просто, песня, сказка. Спасибо за такие альтруистические труды
Спасибо за труды. Давно ждали...
Коммент для продвижения канала. Автор заслуживает, чтобы его смотрело как можно больше людей.
как же я ошибался... спасибо за видео
Дуже дохідливо розповідаєш! )) лайк за добру подачу матеріала!
Кладезь просто!
Картинка с ducktyping огонь)
сколько лет сколько зим, а мы уже сёоооо, гууру
Спасибо что радуешь нас контентом
Бро отличный контент , продолжай , интересная инфа
Очень ждал твоих видео. Как огонь свечи во тьме. Спасибо!
Коммент в поддержку канала! Отличный видеоряд и подача материала!
Спасибо Вам за Вашу работу, классный канал, очень много полезной информации
Коммент в поддержку, успехов каналу :)
Отличная подача материала
Спасибо! Инфа огонь!🔥🔥🔥
четко. спасибо было полезно и структурированно!
Спасибо, очень информативно.
Комментарий для продвижения канала ! Спасибо автору за старания!
Лайк,прослухаю пізніше
Спасибо! Всё очень понятно :)
оч крутой урок, все понятно.
Отличный канал. Пожалуйста, расскажите о Protocol и ABC с примерами.
Я смотрел видео от ArjanCodes....но другой взгляд не помешал бы....мало видео на ютубе на эту тему.
Годное видео! Нравятся примеры из других языков и написание кода (и заметок) в живую
Сильный контент
Огромное вам спасибо, 6 часов пытался понять как работает полиморфизм, наверно уже 10 видео на эту тему посмотрел, но именно ваше объяснение + сравнение с другим языком программирования, дало мне понять схему работы Полиморфизма в Питоне 🤝
Спасибо!!!
урок просто топ
наконец то!
Я думал новый видос выходит раз в пол года)))
бывает и так, от свободного времени зависит, я ж программированием зарабатываю, а не видео =) так что надеюсь на ваше терпение)
Супер
пасиб 😉
Попытка создания лишних сущностей родила понятие полиморфизм. Причем в любых языках.
Смущает комментарий на первой строке. Полиморфизм - это одинаковый интерфейс метода в классе родителя, и разная реализация этого же метода в дочерних классах. спасибо за канал, понимаю что в наше бесплатное образование ты вложил свой труд👍🏻, ценим.
зря смущает и вы ошибаетесь, иначе получается ,что там где нет наследования -нет и полиморфизма, а я прямо в видео привел пример его на примере полиморфизма методов, оверлоадинг из джавы. Если вы начнете копать теорию, то обнаружите что полиморфизм бывает разный, даже в языках без ООП.
Genius
Всем привет! Вот я подумал о первом примере который был типо из джавы, так вот я правильно понял это на питоне что это можно сделать так:
Мы в ините просто проверяем тип передаваемых аргументов и из этого уже вызываем ту или иную функцию? или я дуб и можно сделать как-то иначе и проще?
в джаве это из коробке, в питоне можно сваять с помощью singledispatch
А это двоеточие вообще на что-то влияет? Написал def noise(animal: int) - и всё так же работает, разве что PyCharm подсветил метод, сообщив, что у int нет атрибута make_noise.
а вот тут рассказано ruclips.net/video/XuYZwhIvR5w/видео.html
касаемо дактайпинг, может это все же делегация ?
Объясните пожалуйста как здесь работает строчка if __name__ == "__main__"?
ruclips.net/video/RG8dobvf6kE/видео.html
На самом деле я не очень понимаю, чем принципиально отличается полиморфизм подтипов на 9:10 от полиморфизма утиного, который обозначается в видео дальше. Ведь в тот же Server() мы будем передавать объекты, которые было бы круто унаследовать от абстрактного класса, где мы обозначим структуру, ведь нам необходима именно одинаковая структура (например, одинаковые имена вызываемых методов - .get_users()), чтобы взаимодействовать с пришедшим объектом. Да и в целом, в Python-е же все наследуется от object-а, значит в сути мы каждый раз работаем с наследниками... получается утиная типизация тут это частный случай полиморфизма подтипов?
Кажется я либо запутался, либо просто слишком все усложняю сейчас. Какой же этот ваш полиморфизм душная и сложная тема.
upd. Я понимаю, что согласно duck typing-у мы можем передавать любые объекты, которые имеют необходимое поведение, что можем условно избежать наследования и обозначения типа, и тут кроется разница. Но как минимум, мы же не будем в аннотации типов указывать условно десяток разных ожидаемых классов - проще будет собрать это в какой-то общий контейнер и указать его, нет?
Розетка хрюкала, но электричества не давала....