Полиморфизм в Python. Что такое Утиная типизация (ducktyping)
ฝัง
- เผยแพร่เมื่อ 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.
а вот тут рассказано th-cam.com/video/XuYZwhIvR5w/w-d-xo.html
Объясните пожалуйста как здесь работает строчка if __name__ == "__main__"?
th-cam.com/video/RG8dobvf6kE/w-d-xo.html
На самом деле я не очень понимаю, чем принципиально отличается полиморфизм подтипов на 9:10 от полиморфизма утиного, который обозначается в видео дальше. Ведь в тот же Server() мы будем передавать объекты, которые было бы круто унаследовать от абстрактного класса, где мы обозначим структуру, ведь нам необходима именно одинаковая структура (например, одинаковые имена вызываемых методов - .get_users()), чтобы взаимодействовать с пришедшим объектом. Да и в целом, в Python-е же все наследуется от object-а, значит в сути мы каждый раз работаем с наследниками... получается утиная типизация тут это частный случай полиморфизма подтипов?
Кажется я либо запутался, либо просто слишком все усложняю сейчас. Какой же этот ваш полиморфизм душная и сложная тема.
upd. Я понимаю, что согласно duck typing-у мы можем передавать любые объекты, которые имеют необходимое поведение, что можем условно избежать наследования и обозначения типа, и тут кроется разница. Но как минимум, мы же не будем в аннотации типов указывать условно десяток разных ожидаемых классов - проще будет собрать это в какой-то общий контейнер и указать его, нет?
Розетка хрюкала, но электричества не давала....