Уроки Python с нуля / #19 - Наследование, инкапсуляция, полиморфизм

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 พ.ย. 2024

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

  • @ОлегПаламарчук-в9у
    @ОлегПаламарчук-в9у 2 ปีที่แล้ว +87

    Парень, молодец, отлично объясняешь, и, главное, по порядку, по полочкам, ничего не пропуская! спасибо тебе!

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

    Тема довольно сложная, но вы умеете объяснять всё максимально понятно и доступно.

  • @АнастасияКороткая-э1т
    @АнастасияКороткая-э1т 9 หลายเดือนก่อน +6

    Сложная тема, но все очень подробно и понятно. С инкапсуляцией остались вопросы ещё. А в остальном все прям очень четко. Спасибо!

  • @Naury-f7w
    @Naury-f7w ปีที่แล้ว +6

    Про инкапсюляцию (она есть). На моменте 17:45, обращение к полю year дало результат, так как вы добавляли нижние подчеркивания в названии переменной, у которой оставалось значение None, а в конструкторе создавали новое поле класса. Плохо выражаю свои мысли, если короче, у нас просто у объекта в тот момент было два поля: year и __year. К полю __year мы не могли обратиться, так как оно инкапсулировано, но к полю year мы спокойно обращались. Это два разных поля

  • @IndexSteadFast
    @IndexSteadFast ปีที่แล้ว +12

    12:04 class School(Building, House) выдаёт ошибку, потому что House тоже наследует от Building. Происходит конфликт порядка методов, т.к. наследуется одно и тоже, а так множественное наследование разрешено в питоне.

  • @just_simplex
    @just_simplex ปีที่แล้ว +19

    pupils довольны)

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

    Мммм... Я вот нашел немного другую инфу об инкапсуляции: поле __name, к примеру, не нужно прописывать в классе, его необходимо инициализировать и определять непосредственно в конструкторе. Тогда оно не будет доступно извне, только внутри класса и через методы. Да, это немного неудобно, не так как в тех же шарпах, но я попробовал и работает нормально.

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

      У меня точно так же, но я это открыл эксперементальным путём.

  • @sofiipochta
    @sofiipochta 3 หลายเดือนก่อน +4

    Спасибо, посмотрела!

  • @logoskm
    @logoskm ปีที่แล้ว +9

    Подписался на платные курсы. Но там рассказывается все сухо. Подписался на этот канал и понял что как и откуда берется.

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

    А вот это сложноватый урок,но мы не сдаемся)

    • @ЗНАКОМЫЙСВАРЩИК
      @ЗНАКОМЫЙСВАРЩИК 2 ปีที่แล้ว +6

      тот что ранее вообще не понятно

    • @VitaliyZlobin
      @VitaliyZlobin ปีที่แล้ว +18

      Теория ООП - это отдельная большая тема, за 2-3 коротких видео объяснить не реально.
      Было бы странно, если бы ты с нуля за 2-3 коротких видео хоть что-то понял.
      Эти уроки(18-19) для тех, кто уже знает ООП на другом языке, а тут просто знакомится с синтаксисом питона.

    • @МихайлоТуз
      @МихайлоТуз ปีที่แล้ว +5

      Смотри видео. Нужно понять саму логику и дойти к данному уровню абстракции, это не сложно. Сделай себе ассоциации, и всё будет в порядке.

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

      Наоборот достаточно легко,у меня вот наоборот с конструктором __init__ какие то ошибки возникали,а тут достаточно легко объяснили

    • @YuriBakharev
      @YuriBakharev ปีที่แล้ว +3

      Толи примеры неудачные.
      Как по мне, это какой-то очередной костыль/инструмент.
      Завуалированая работа с данными.
      Сделать список например для каждого здания, и править по мере необходимости нужные параметры.
      Не тоже ли самое получится...?
      Выглядит более удобоваримо, и не более.
      Тоесть, навыдумывали кучу способов выборки данных.
      Не починили глюки с открытием файла, а придумали другую открывалку.
      Единственный бонус питона, что в массивы можно пихать данные разного типа.
      От остальной мишуры понту нету.
      Тоже самое можно и на бэйсике сформулировать.

  • @L1s3L_893
    @L1s3L_893 2 หลายเดือนก่อน +2

    Кстати, в Python 3 вместо super(School, self)(и так далее)
    нужно просто писать super() , но если вы работаете на пайтон 2 - Продолжайте писать super(School, self)

  • @Vertolobus
    @Vertolobus 10 หลายเดือนก่อน +2

    Спасибо, долго не мог понять эту тему пока не посмотрел этот ролик!

  • @hondaconan5818
    @hondaconan5818 ปีที่แล้ว +3

    лучший просмотрел все 19 уроков кайф

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

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

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

    У C# есть множественное наследование. И это супер удобная вещь. Ты можешь создать несколько интерфейсов по типу IFly, IRun, IEnemy. И создавать классы, которых будет объединять например интерфейс IFly и IEnemy. То есть ты создаешь летающих врагов. Так же можешь использовать IFly например на классе животных, чтобы определить летающих животных. А не создавать отдельные классы по типу FlyingEnemy или FlyingAnimal.

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

      Если ты говоришь про С# в играх то это может быть сделано с библиотекой

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

      Называется это интерфейс

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

      в Python тоже есть множественное наследование, хз, почему он здесь говорит, что его нет

  • @ДенисЕремин-ж2д
    @ДенисЕремин-ж2д 2 ปีที่แล้ว +8

    Это было круто! Только с вашим уроком внятно понял, как устроен класс.

    • @Нунчаки-м8г
      @Нунчаки-м8г 2 ปีที่แล้ว +1

      Я дошел до этого урока но ничего не понял. Скажите как вы тренеруетесь или надо все записывать или пересмотреть все сначала ?

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

      @@Нунчаки-м8г Делать конспекты и заметки порой действительно очень полезно. Мне помогает.

    • @ShooterStar
      @ShooterStar 2 ปีที่แล้ว

      @@Нунчаки-м8г записывать 1000% надо, плюс практика. Есть много сервисов в сети для практики на любом языке

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

    "В питоне есть инкапсуляция но она реализованная не очень хорошо"когда показал на деле я засмеялся)

    • @VitaliyZlobin
      @VitaliyZlobin ปีที่แล้ว +8

      отрицательная реализация

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

      Што смешного?

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

      __@@eveel7427

  • @happiness04.07
    @happiness04.07 3 ปีที่แล้ว +8

    Thank you so much !!! I like your explanation very much.

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

    После прошлого урока думал что щас будет смерть, а тут всё приятно, просто и понятно :3

  • @orthodox-chanel
    @orthodox-chanel 2 ปีที่แล้ว +3

    Говорили классы это хорошо, классы это экономия времени)) для того чтобы вывести информацию снизу пришлось написать около 40 строчек кода)
    Year: 1999
    City: New-York
    Pupils: 100
    Year: 2001
    City: Washington
    Doctors 15
    Year: 2005
    City: New-York
    Sellers: 4

    • @amvora
      @amvora 2 ปีที่แล้ว

      👍

    • @VitaliyZlobin
      @VitaliyZlobin ปีที่แล้ว +7

      Теперь представь, что твоя программа - это реестр зданий страны. Тогда уже не весело будет.
      И классы - это не про вывод информации, а удобный способ работать с логически связанными объектами

  • @ilyalaptev4449
    @ilyalaptev4449 3 ปีที่แล้ว +22

    А вот и сложности подъехали)

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

      Ну что,как прогресс?

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

      @@anchousgames_ у меня всë фигово

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

      @@nabik309 а сейчас как?

    • @Господин4-с4м
      @Господин4-с4м 6 หลายเดือนก่อน

      @@Quadro154 сейчас весна

  • @alexandrman1507
    @alexandrman1507 5 หลายเดือนก่อน +2

    В Python ЕСТЬ МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ !!!
    Хотел курсы купить, но после таких ляпов, сомневаюсь, что автор научит действительно чему - то стоящему

    • @uawinwin
      @uawinwin 4 หลายเดือนก่อน +1

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

  • @hapiny4925
    @hapiny4925 3 ปีที่แล้ว +9

    через год этот плейлист соберёт миллионы прсмотров на каждом видео

    • @itproger
      @itproger  3 ปีที่แล้ว +6

      Посмотрим 😁

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

      Прошел год, с момента публикации видео, просмотров 20к)

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

      даже сотни не собрал материал узко рассказан(

    • @AlYeex_old
      @AlYeex_old 9 หลายเดือนก่อน

      Сейчас 100 тысяч просмотров на этом видео.

    • @L1s3L_893
      @L1s3L_893 2 หลายเดือนก่อน

      @@itproger Факты

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

    Талант, не иначе, спасибо большое

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

    Начиная с версии python 3.0, метод super можно использовать без тех двух параметров.

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

      спасибо, я после метода super убрал из скобок (название родительского класса, self) - сразу заработало все: super().__init__(year, type)

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

      @@vladimirkazaev9931 честно скажу, херовый курс. Попробуй курс от Сергея Балакирева на степике

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

      @@coffeeglek6773 согласен, особенно когда он сказал, что в питоне нет множественного наследования. Человек основ не знает и берётся других учить

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

      @@w1944w1944 сейчас на курсе Сергея Балакирева с канала selfedu, советую.

    • @Влад-ю3р6ф
      @Влад-ю3р6ф ปีที่แล้ว +2

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

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

    Когда прописал все для вывода числа учеников и запустил программу,мне выдало ошибку связанную с self ну я значит смотрю что не так,сидел мин 8-точно,в итоге оказалось что я написал в методе get_info не self а slef😂так сразу ведь и не заметишь,особенно если у тебя много функций внутри класса/классов и self приходиться писать везде

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

      Я вижу твой комментарий под каждым видео про пайтон!

  • @НикитаБовкунов
    @НикитаБовкунов 3 หลายเดือนก่อน

    А ничего что множественное наследование в питоне есть?
    Ты можешь в классе School(Building) написать запятую и указать ещё один какой-то класс родитель.
    С инкапсуляцией тоже пример доведен до абсурда.

  • @клипы-н9я
    @клипы-н9я ปีที่แล้ว +1

    Думал что с обновленной версией у меня там не работает. Но я просто забыл поставить запятую...

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

    круто 😄

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

    По поводу инкапсуляции - А что если попробовать реализовать приватные данные посредством кортежей? В момент срабатывания метода выводить срез с нужной информацией в новую переменную, производить действия внутри метода, и по окончанию присваивать этой переменной значение None?

    • @gddotop2231
      @gddotop2231 2 ปีที่แล้ว

      Чел, ты гений

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

      А где хранить этот кортеж? Если хранить его так же, как переменную, то кто-нибудь может в кортеж напрямую залезть и взять там данные.

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

      а нельзя скачать доп.библиотеку илии фраймеворк,и не ломать себе мозг или я чего то не понимаю?

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

      @@asdqwezxcrtyyy8922 я если честно, не очень понимаю само определение инкапсуляции, что оно подразумевает?

  • @Exclus1ve_top1
    @Exclus1ve_top1 3 ปีที่แล้ว +25

    Наследовать можно и от 2-х классов, вроде видео свежее, а инфа порой сомнительная(

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

      согласен, сам только что проверил

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

      Множественное наследование - путь к бесконечному дебагу.
      И зачастую оно говорит о том, что ты не смог спроектировать иерархию должным образом.

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

      @@VitaliyZlobin разработчики питона не дураки, раз разрешили эту фичу, им виднее. некоторые вещи можно нормально только через множественное наследование решить - например класс автомобиль-амфибия от автомобиля и судна

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

      @@w1944w1944 перечитай мой коммент, там нет про дураков и полный отказ от множественного наследования. Кстати, разработчики Java и C# тоже не дураки, однако в этих языкам от множественного наследования осознанно отказались.

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

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

  • @nurajzakshb7353
    @nurajzakshb7353 7 หลายเดือนก่อน

    у меня вопрос касательно 14:35 минуты Почему мы при обращении к конструктору основного класса внутри скобок ф-ции super() указываем класс наследник через который обращаемся, а при обращении к методу основного класса не указываем класс наследник?

  • @pixel9885
    @pixel9885 5 หลายเดือนก่อน

    А зачем задавать полям city и year значение None? Если просто убрать эти строчки кода, то все будет также корректно обрабатываться. Или нет?

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

    9:32 Для чего передаётся название унаследованного класса при обращении к конструктору родительского класса?

  • @ДанилЗахаров-э7д
    @ДанилЗахаров-э7д ปีที่แล้ว +3

    TypeError: Building.__init__() takes 3 positional arguments but 4 were given
    Не могу понять почему выдает такую ошибку

    • @АннаБеляева-ч5п
      @АннаБеляева-ч5п ปีที่แล้ว +4

      В строке school=building(100, 2000, "Moscow') - замени building на school

    • @kukabuka-z1f
      @kukabuka-z1f ปีที่แล้ว

      а почему в видео показано по другому а тут по другому?
      @@АннаБеляева-ч5п

  • @after246
    @after246 8 หลายเดือนก่อน

    Мне эти уроки дается легко потому что ранее изучал java
    и в нем ООП.Если изучишь один язык прог то другие будут очень легкими 😅😅😅

  • @albertasatryan1477
    @albertasatryan1477 3 ปีที่แล้ว +8

    а почему нельзя наследовать сразу с нескольких классов? вроде нормально работает

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

      Множественное наследование - путь к бесконечному дебагу.
      И зачастую оно говорит о том, что ты не смог спроектировать иерархию должным образом.

    • @АндрейИванов-д2д8ф
      @АндрейИванов-д2д8ф ปีที่แล้ว

      Потому что сделать не могут, а оправдываются что так плохо. Мля. Ты сделай, а программисты сами будут решать надо оно им или нет.

  • @Nailyashkins
    @Nailyashkins 8 วันที่ผ่านมา

    Крутоооооооооооо

  • @suspenseflamezzxzxzz855
    @suspenseflamezzxzxzz855 2 ปีที่แล้ว

    Там есть уже множественное наследование
    class Builder:
    pass
    class Buildering:
    pass
    class Build(Builder, Buildering):
    pass
    так что всё работает

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

      И правда... Ну есть же множественное наследование! Посмотрел весь курс, и он просто прекрасен! Но вот то, что автор говорит, что в языке нет множественного наследования(а по факту оно есть, и код приведенный выше действительно работает), меня, как новичка, очень сильно сбило с толку.

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

      @@jesman008 тебе как новичку для чего нужно множественное наследование?

  • @Volodyanya
    @Volodyanya 6 หลายเดือนก่อน

    У меня почемуто на выводе финального кода в терминале задваивается инфа + показывает кол-во "учеников" сначала то что по умолчанию (0), а потом вконце то что я указал. Почему так?

  • @mirch7
    @mirch7 20 วันที่ผ่านมา

    Я не понял для чего нужно наследие, если параметры можно просто назначить как None и менять их там где это нужно

    • @куруш79
      @куруш79 19 วันที่ผ่านมา +1

      Для удобства и иногда для уменьшения кода

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

    При выводе информации. У меня между значениями не проставляется точка, почему?
    Year: 2000 city: Москва pupils: 100

  • @hyhr0nium
    @hyhr0nium 4 หลายเดือนก่อน +1

    👍👍👍

  • @memchiki_lol
    @memchiki_lol ปีที่แล้ว +6

    Них*я не понятно, но очень интересно

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

    зачем нужны вторая и третья строчки кода? код работает и без них. То же самое касается 17 и 18 уроков

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

    Я буду тут каждый день. День 11

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

    11:22
    Поправка: Класс может иметь сколько угодно родителей, НО порядок должен быть такой: родитель-наследник, родитель.
    Но смысла в этом нет, если родитель у родителя-наследника и у нового класса наследника будет одним и тем же классом. Ибо у родителя-наследника и так уже доступ к методам их общего родителя

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

      Действительно, в Питон есть множественное наследование (сколько угодно родителей). Не знаю, было ли так с самого начала, но множественное наследование точно было уже во 2-м Питоне. Если у всех родителей есть одноименный атрибут (свойство(поле) или метод), то какой же из них использовать? Чтобы это решить, классы перебираются в определенном порядке, до тех пор пока это имя не будет найдено в каком-то классе. Т.е. существует особый маршрут поиска (MRO) по "генеалогическому древу" классов. Упрощенно такой: "сначала смотрим у себя, потом у всех своих родителей слева направо, потом у всех дедушек, у всех прадедушек и т.д." Посмотреть этот маршрут можно методом mro(). Например, "bool.mro()" выведет [, , ]

    • @zombich
      @zombich 2 ปีที่แล้ว

      @@olegkomlev спасибо)

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

    А какой смысл в шапке держать year и city, если они инициализированы? можно None в инициализации прописать же, нет?

    • @sogorich
      @sogorich 3 ปีที่แล้ว +7

      Потому что автор не понимает ничего, посмотрел второсортные уроки по ООП и считает себя мастером, да ещё и других пытается учить.
      Он уже в начале видео засирает память бесполезными данными. Чтобы Вы понимали, он создаёт 2 статических свойства year и city, а так же создаёт ещё 2 свойства точно такие же, только уже в инициализаторе класса и являются они уже локальными свойствами. Тем самым при создании экземпляра у него в памяти будет храниться 4 свойства, а не 2. Он думает, что если вне __init__ указал свойствам значения None, то свойства в инициализаторе будут принимать эти значения, а по факту нет, т.к повторюсь, в памяти у него будет 4 свойства, 2 статический свойства и 2 локальных свойства. Правильным вариантом действительно было бы сделать так как Вы говорили, определить дефолтные параметры в инициализаторе классе, т.е в __init__.

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

      ​@@sogorich Не пойму с чего такие выводы. Начнем с того, что понятие "статическая переменная" в python - отсутствует. Можно лишь реализовать её аналог. А если и реализовывать её аналог, то явно с помощью методов, но никак не с помощью конструктора (инициализатор класса, если вам так будет угодно). Так и при чем, если судить по вашей логики, то они относятся к разной области в памяти, но как бы не так, они имеют один участок памяти, если не верите - проверьте через дебаггер с удобной для вас IDE.

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

      @@arashitaxe8101 Не переменная, а свойство.
      Свойство определенное в классе изначально ведёт себя как статическое, если не имеются реализованные методы класса для этих свойств (@classmethod).
      Свойства определенные в классе возможно изменить только через методы класса, о которых я сказал выше, если вы пытаетесь, например, обращаться к ним через self, то они доступны будут только для чтения, если вы запишите туда другое значение Вы не измените это свойство класса, а создадите новое, которое будет в пространстве имён экземпляра, а не класса. В этом легко убедиться используя магический метод __dict__

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

    python как будто javaScript :D ну в принципе оба на си-подобных и написаны :D

  • @Dmitrijs.Skorohodovs
    @Dmitrijs.Skorohodovs ปีที่แล้ว +1

    А почему этот ваш pupils не выводился? Почему его не видно?

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

      Эммм…
      Забил в переводчике - Pupils
      Вывело на русском - Ученики школы
      Ты гений кнш…

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

    А, если мне надо убрать year или city из class School. То что мне надо сделать? Просто убирая из конструктора эти параметры, то мне выходит ошибка, о том, что я убрал, того не хватает

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

      суть параметра наследования в том - чтобы наследовать все данные от класса 'Building", поэтому в данном случае, тебе нужно перестать принимать параметр 'Building" и делать всё отдельным классом

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

      @@liiizzzzeq спасибо)

  • @13-th_Lord
    @13-th_Lord 10 หลายเดือนก่อน

    10:16 -- У меня ошибку выдает, хотя списываю точь в точь))

  • @куруш79
    @куруш79 19 วันที่ผ่านมา

    Даже я всё понял

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

    По всей видимости поняли что инкапсуляция в ооп излишне. Защита данных от себя самого или своей команды это тупость))) когда это пригождалось если не мешало. Гораздо чаще получается что приватные поля или классы приходится в будущем переделывать особенно если модуль расчитан на доработку)))

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

    есть вопрос, почему в видео сработал ввод
    super(school, self).__init__(year, city)
    self.pupils = pupils
    в моем случае оно не работало пока я сначала не обозначил self.pupils = pupils и только потом super(school, self)...и тд
    подскажите пожалуйста

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

    Выжившие сколико вас тут

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

    Вопросы: почему мы, ссылаясь на класс super() в первом случае пишем параметры School и self, а во втором - ничего?

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

      Потому что в первом случае у нас конструктор

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

    Уроки Python с нуля / #19 - Наследование, инкапсуляция, полиморфизм
    Школа itProger / Программирование
    213 тыс. подписчиков
    Подписаться

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

    от мне непонятно
    если у меня просто класс, я создаю на его основе обджект, и если я не прописал в def __init__ (year=None, city=None), то я обязан эти значения указать при создании обджекта, иначе у меня вылезет ошибка,
    а вот если у меня класс наследуется от класса, и я в наследнике НЕ прописываю в def __init__ super(School, self).__init__(year, city), получается я могу создать школу (напомню что year=None, city=None в def __init__ я НЕ прописывал), у которой не будет года и города, а будут только ученики, и никакой ошибки.
    объясните плиз как так и почему? это странно (имхо)
    заранее спасибо и прошу прощения если вопрос тупой (я нуб).

  • @johannschwengler529
    @johannschwengler529 3 ปีที่แล้ว +3

    Пулеметная очередь информацией аааааааааа

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

    👍🏻

  • @ИльяЗорин-н2щ
    @ИльяЗорин-н2щ ปีที่แล้ว

    Здравствуйте мне 17 лет и я создал телеграмм канал, где показываю с какими трудностями я сталкиваюсь при изучении языков программирования с нуля. Также объясняю как решать эти проблемы. К каналу есть чат, где я отвечаю на интересующие вас вопросы, если заинтересовало ставь +

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

    Тема наследования не раскрыта. Если указать class House(School) и указать house = House(3, 2000, 'Moscow'), то при запуске выскочит ошибка "TypeError: super() argument 1 must be a type, not School" . Запись super().__init__(year, city) данную ошибку убирает и всё работает.

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

      Прописываю:
      class House(School):
      pass
      house = House(3, 2000, 'Moscow')
      house.get_info() - все работает без ошибок(строчка с pass забыта наверное)

  • @ЗНАКОМЫЙСВАРЩИК
    @ЗНАКОМЫЙСВАРЩИК 2 ปีที่แล้ว

    Еще заметил факт в классе_наследнике ШКОЛА убрал поле ученики=0 и всё равно всё работает.

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

    2:27 я когда пытаюсь ввести данные в скобки (как на видео, например, 2000 год) у меня выдает ошибку Building() takes no arguments, хотя код списал с видео. в чем прикол?
    )

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

      скинь код

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

      @@melancholic_017
      class Building:
      yearr = None
      cityy = None
      def __int__(self, yearr, cityy):
      self.yearr = yearr
      self.cityy = cityy
      def get_info(self):
      print('Y:', self.yearr, 'C:', self.cityy)
      school = Building(и вот в этом месте когда пишу значения выдает ошибку. И pycharm выделяет написанное мол у меня не все хорошо)

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

      @@maiyaglumova def __init__

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

      @@melancholic_017 ой, спасибо большое. Думал, что в компе проблема, а проблема в невнимательности. стыдно даже))

  • @ЗНАКОМЫЙСВАРЩИК
    @ЗНАКОМЫЙСВАРЩИК 2 ปีที่แล้ว

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

  • @АндрейИванов-д2д8ф
    @АндрейИванов-д2д8ф ปีที่แล้ว

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

  • @Ааа-д4ш
    @Ааа-д4ш 7 หลายเดือนก่อน

    8:00 peoples*

    • @VayVerlin69
      @VayVerlin69 7 หลายเดือนก่อน +1

      pupils значит ученики , а peoples значит люди

  • @Бабобой-и4з
    @Бабобой-и4з ปีที่แล้ว

    Какая версия пайтона

  • @Bequ_up
    @Bequ_up 7 หลายเดือนก่อน

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

    • @nurnasyrdyn3249
      @nurnasyrdyn3249 6 หลายเดือนก่อน +1

      Он показал просто пример как работает наследие

  • @resurrect_me87
    @resurrect_me87 9 วันที่ผ่านมา

    6:00

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

    pupils))

    • @Ilm1n
      @Ilm1n 9 หลายเดือนก่อน

      Что не так?)

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

    та шо за пздц TypeError: super(type, obj): obj must be an instance or subtype of type

  • @sergeiazarov
    @sergeiazarov 5 หลายเดือนก่อน

    Говорить про переопределение методов как про полиморфизм в среде без строгой типизации - ну такое...

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

    Прям таки в питоне нельзя указать два класса родителя... учитель учите матчасть

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

    Pupils 😂😂😂😂мне смешно

    • @Ilm1n
      @Ilm1n 9 หลายเดือนก่อน

      Чего смешного?)

  • @ктоя-и7ъ
    @ктоя-и7ъ 6 หลายเดือนก่อน

    сложно самый сложный урок в курсе

  • @EnterxTo
    @EnterxTo 10 หลายเดือนก่อน

    почему у меня не работает я всё так же сделал

    • @official0001
      @official0001 9 หลายเดือนก่อน

      Версия у тебя более новая

    • @official0001
      @official0001 9 หลายเดือนก่อน +1

      Ролику то 2 года

  • @Avardon
    @Avardon 2 ปีที่แล้ว

    как скрывать

    • @Avardon
      @Avardon 2 ปีที่แล้ว

      а понял

  • @gagikpro1035
    @gagikpro1035 3 ปีที่แล้ว

    I 1

  • @awakened_I
    @awakened_I 3 ปีที่แล้ว +3

    Вот я смотрю и думаю что слишком много писанины для вывода всего трех строчек. Неужели нужно столько кода чтобы вывести 3 строки?

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

      Ну эт как бы примеры)

  • @p.konstantin1888
    @p.konstantin1888 2 ปีที่แล้ว

    "Всё это будет обрабатываться корректно" - очередная фраза-паразит всех этих видео.

  • @resurrect_me87
    @resurrect_me87 8 วันที่ผ่านมา

    Завязывай троллить. 18 уроково шёл нормально, а потом начал дезой оговариваться.

  • @p.konstantin1888
    @p.konstantin1888 2 ปีที่แล้ว

    Боги, почему ты через каждую минуту говоришь "давайте ВОЗМОЖНО сделаем то" или "давайте ВОЗМОЖНО сделаем это"? Ты после этого ЯВНО прописываешь то, о чём только что говорил. Это уже не "возможно", это "определённо"! Андэстенд ми?

  • @Sadownick
    @Sadownick 3 ปีที่แล้ว

    7:47 pupils - количество учеников 😄 сорян, но это слово переводится немного не так, это зрачки, произнёс правильно, а записал нет, people, так нужно было. Без обид, это придирка, по факту можно хоть тра-ля-ля назвать, но нейминг действительно важен и good code лучше с самого начала прививать себе, ибо иногда это может очень плохо аукнуться в больших проектах, имхо...
    UPD: извиняюсь, за то, что ложно обвинил автора в некорректности перевода, сорри... Мне указали на мою же ошибку ; (

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

      Друг, забей в переводчик, сам все поймёшь

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

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

    • @itproger
      @itproger  3 ปีที่แล้ว +3

      Ничего страшного. Опять же, главное правильное использование 😅😂

  • @Virusnik
    @Virusnik 2 ปีที่แล้ว

    Думаю что "наследники" достаточно бесполезная команда, да и вообще я заметил что в питоне оочень много бесполезных команд

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

      тут просто пример с малым кол-вом параметров, а если их десяток или 2 или 3 десятка ?

    • @KosaneSegel
      @KosaneSegel 2 ปีที่แล้ว

      В более сложных случаях они нужны.