Полиморфизм в 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

ความคิดเห็น • 47

  • @soldiertoy
    @soldiertoy ปีที่แล้ว +10

    №2 Не так давно наткнулся на ваш канал. Господи храни Королеву что это произошло. Уже все видео пересмотрел)
    В связи с тем что давно не было активности на канале, я впал в депрессию и бесконечно молча про себя говорил " на что же Python Russian нас покинул..."
    Родные уже к бабкам водили.. Не помогло
    Излечился инъекцией(внутривенно) нового видео! Спасибо!

  • @xzablik
    @xzablik ปีที่แล้ว +4

    Как же ты/вы круто объясняешь! смотрю запоем просто, песня, сказка. Спасибо за такие альтруистические труды

  • @sergeykarandeev4303
    @sergeykarandeev4303 ปีที่แล้ว +5

    Спасибо за труды. Давно ждали...

  • @user-dn8bb3ii9d
    @user-dn8bb3ii9d ปีที่แล้ว +2

    Картинка с ducktyping огонь)

  • @databox4279
    @databox4279 ปีที่แล้ว +1

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

  • @user-gc4ic9xc1j
    @user-gc4ic9xc1j ปีที่แล้ว +1

    Спасибо что радуешь нас контентом

  • @user-do4nq3fr6t
    @user-do4nq3fr6t ปีที่แล้ว +2

    сколько лет сколько зим, а мы уже сёоооо, гууру

  • @user-buser_eto_ja
    @user-buser_eto_ja 3 หลายเดือนก่อน +1

    Кладезь просто!

  • @Developer_python_
    @Developer_python_ ปีที่แล้ว +2

    Лайк,прослухаю пізніше

  • @angrykeo
    @angrykeo ปีที่แล้ว +1

    Очень ждал твоих видео. Как огонь свечи во тьме. Спасибо!

  • @doszhanm6936
    @doszhanm6936 ปีที่แล้ว +1

    как же я ошибался... спасибо за видео

  • @netsdzian8009
    @netsdzian8009 ปีที่แล้ว +1

    Коммент в поддержку канала! Отличный видеоряд и подача материала!

  • @Smnov
    @Smnov ปีที่แล้ว +2

    Коммент в поддержку, успехов каналу :)

  • @user-vi7ls2jh6c
    @user-vi7ls2jh6c ปีที่แล้ว +1

    Спасибо Вам за Вашу работу, классный канал, очень много полезной информации

  • @kachancorn
    @kachancorn ปีที่แล้ว +1

    Спасибо! Инфа огонь!🔥🔥🔥

  • @user-pb4tc6kx7p
    @user-pb4tc6kx7p ปีที่แล้ว +1

    Спасибо, очень информативно.

  • @sviteribuben7245
    @sviteribuben7245 ปีที่แล้ว +1

    четко. спасибо было полезно и структурированно!

  • @lostsoul8634
    @lostsoul8634 ปีที่แล้ว +2

    Отличный канал. Пожалуйста, расскажите о Protocol и ABC с примерами.
    Я смотрел видео от ArjanCodes....но другой взгляд не помешал бы....мало видео на ютубе на эту тему.

  • @user-yx2jv8ug8r
    @user-yx2jv8ug8r ปีที่แล้ว +1

    Спасибо! Всё очень понятно :)

  • @moIom745
    @moIom745 ปีที่แล้ว

    Отличная подача материала

  • @sleepyeconomist509
    @sleepyeconomist509 ปีที่แล้ว +1

    Комментарий для продвижения канала ! Спасибо автору за старания!

  • @user-nq5yh5re4w
    @user-nq5yh5re4w ปีที่แล้ว +1

    Бро отличный контент , продолжай , интересная инфа

  • @topevgn5914
    @topevgn5914 ปีที่แล้ว +1

    оч крутой урок, все понятно.

  • @lemegeton9054
    @lemegeton9054 ปีที่แล้ว +1

    Годное видео! Нравятся примеры из других языков и написание кода (и заметок) в живую

  • @spikespiegel4282
    @spikespiegel4282 ปีที่แล้ว +2

    Спасибо!!!

  • @khamzinadel
    @khamzinadel ปีที่แล้ว +1

    Сильный контент

  • @user-wu3jo7yq1h
    @user-wu3jo7yq1h ปีที่แล้ว +1

    Я думал новый видос выходит раз в пол года)))

    • @PythonRussian
      @PythonRussian  ปีที่แล้ว +1

      бывает и так, от свободного времени зависит, я ж программированием зарабатываю, а не видео =) так что надеюсь на ваше терпение)

  • @FarofWell
    @FarofWell ปีที่แล้ว +2

    наконец то!

  • @azamatmyktybekov6194
    @azamatmyktybekov6194 ปีที่แล้ว +1

    урок просто топ

  • @funnydc9955
    @funnydc9955 ปีที่แล้ว +5

    Дуже дохідливо розповідаєш! )) лайк за добру подачу матеріала!

  • @user-ok9tp5lx6n
    @user-ok9tp5lx6n ปีที่แล้ว +2

    Супер

  • @g.s1849
    @g.s1849 ปีที่แล้ว +3

    Огромное вам спасибо, 6 часов пытался понять как работает полиморфизм, наверно уже 10 видео на эту тему посмотрел, но именно ваше объяснение + сравнение с другим языком программирования, дало мне понять схему работы Полиморфизма в Питоне 🤝

  • @berick5362
    @berick5362 ปีที่แล้ว +1

    пасиб 😉

  • @ayattelzhanov9888
    @ayattelzhanov9888 ปีที่แล้ว

    Смущает комментарий на первой строке. Полиморфизм - это одинаковый интерфейс метода в классе родителя, и разная реализация этого же метода в дочерних классах. спасибо за канал, понимаю что в наше бесплатное образование ты вложил свой труд👍🏻, ценим.

    • @PythonRussian
      @PythonRussian  ปีที่แล้ว +1

      зря смущает и вы ошибаетесь, иначе получается ,что там где нет наследования -нет и полиморфизма, а я прямо в видео привел пример его на примере полиморфизма методов, оверлоадинг из джавы. Если вы начнете копать теорию, то обнаружите что полиморфизм бывает разный, даже в языках без ООП.

  • @sergeyzimin3500
    @sergeyzimin3500 ปีที่แล้ว +1

    Попытка создания лишних сущностей родила понятие полиморфизм. Причем в любых языках.

  • @user-cw7bs1uc5g
    @user-cw7bs1uc5g 11 หลายเดือนก่อน +1

    Genius

  • @isildurgir
    @isildurgir 3 หลายเดือนก่อน +1

    касаемо дактайпинг, может это все же делегация ?

  • @725etw7w
    @725etw7w 11 หลายเดือนก่อน

    Всем привет! Вот я подумал о первом примере который был типо из джавы, так вот я правильно понял это на питоне что это можно сделать так:
    Мы в ините просто проверяем тип передаваемых аргументов и из этого уже вызываем ту или иную функцию? или я дуб и можно сделать как-то иначе и проще?

    • @PythonRussian
      @PythonRussian  11 หลายเดือนก่อน +1

      в джаве это из коробке, в питоне можно сваять с помощью singledispatch

  • @user-ev8tr5fh1o
    @user-ev8tr5fh1o ปีที่แล้ว

    А это двоеточие вообще на что-то влияет? Написал def noise(animal: int) - и всё так же работает, разве что PyCharm подсветил метод, сообщив, что у int нет атрибута make_noise.

    • @PythonRussian
      @PythonRussian  ปีที่แล้ว +1

      а вот тут рассказано th-cam.com/video/XuYZwhIvR5w/w-d-xo.html

  • @user-yq8kt1th9z
    @user-yq8kt1th9z 3 หลายเดือนก่อน

    Объясните пожалуйста как здесь работает строчка if __name__ == "__main__"?

    • @PythonRussian
      @PythonRussian  3 หลายเดือนก่อน

      th-cam.com/video/RG8dobvf6kE/w-d-xo.html

  • @_radja
    @_radja ปีที่แล้ว

    На самом деле я не очень понимаю, чем принципиально отличается полиморфизм подтипов на 9:10 от полиморфизма утиного, который обозначается в видео дальше. Ведь в тот же Server() мы будем передавать объекты, которые было бы круто унаследовать от абстрактного класса, где мы обозначим структуру, ведь нам необходима именно одинаковая структура (например, одинаковые имена вызываемых методов - .get_users()), чтобы взаимодействовать с пришедшим объектом. Да и в целом, в Python-е же все наследуется от object-а, значит в сути мы каждый раз работаем с наследниками... получается утиная типизация тут это частный случай полиморфизма подтипов?
    Кажется я либо запутался, либо просто слишком все усложняю сейчас. Какой же этот ваш полиморфизм душная и сложная тема.
    upd. Я понимаю, что согласно duck typing-у мы можем передавать любые объекты, которые имеют необходимое поведение, что можем условно избежать наследования и обозначения типа, и тут кроется разница. Но как минимум, мы же не будем в аннотации типов указывать условно десяток разных ожидаемых классов - проще будет собрать это в какой-то общий контейнер и указать его, нет?

  • @user-bx1mj5th4d
    @user-bx1mj5th4d ปีที่แล้ว +2

    Розетка хрюкала, но электричества не давала....