Python OOP getters setters, decorator property, classmethod, staticmethod

  Рет қаралды 47,636

Python Hub Studio

Python Hub Studio

Күн бұрын

Python OOP lesson in which we will consider getter and setter methods, encapsulation, property decorator, as well as classmethod and staticmethod decorators.
And of course in the context, why is all this needed.
00:00 Introduction, encapsulation in python
03:20 attribute _slots_
04:20 python getters setters
08:03 decorator property and setter
12:38 classmethod decorator
18:09 staticmethod decorator
Link to the code from the tutorial:
gist.github.com/PythonHubStud...
-------------------------------------------------- -------------------------------------------------- ----------------------------------------------
Become a channel sponsor and you will get access to exclusive bonuses.
More:
/ @pythonhubstudio
-------------------------------------------------- -------------------------------------------------- ----------------------------------------------
OOP course with the practice of writing a program:
• Полный курс уроков обу...
Telegram bot development course using an example project:
• Playlist
Subscribe to the channel! Ask questions in the comments!
#PythonHubStudio
#python

Пікірлер: 127
@MrEklair
@MrEklair Жыл бұрын
С каждым пройденным уроком я всё больше радуюсь, что нашёл этот канал. Даже если что то не понятно с первого раза, то ты хотя бы понимаешь, что просто не уловил и надо пересмотреть, а не лектор пытается привить тебе ненависть к программированию. Очень лаконично и хорошо подан материал, присоединяюсь к благодарностям! Выпускайте ещё лекций.
@PythonHubStudio
@PythonHubStudio Жыл бұрын
Спасибо, очень приятно
@user-iq3cr3wj4i
@user-iq3cr3wj4i 3 жыл бұрын
Четко, постепенно. Без пропусков по причине "это классика бл№ть это знать надо". Классные уроки спасибо.
@andreydr2861
@andreydr2861 2 жыл бұрын
И снова БИНГО! Реально все 3 урока просты в понимании, без замудреных терминов. Все прекрасно преподнесено, спасибо автору, приступаю к практике
@killa5159
@killa5159 2 жыл бұрын
Спасибо за курс! Удивляюсь каждый раз насколько точно, быстро и понятно вы объясняете материал. Успехов вам в вашем деле!
@nadyamoscow2461
@nadyamoscow2461 3 жыл бұрын
Очень понятный и наглядный урок, спасибо за ваш труд. Если у вас будет возможность, пожалуйста, рассмотрите и дескрипторы тоже.
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Будут, но чуть позже
@shemyatin_konstantin
@shemyatin_konstantin 11 ай бұрын
​@@PythonHubStudioспасибо за Ваш труд. Всё ещё планируется продолжение? Очень ждём))
@user-lj1to7le9w
@user-lj1to7le9w Жыл бұрын
Это видео помогло мне понять суть данных декораторов. Хорошее объяснение с прекрасным примером.
@mihailbury240
@mihailbury240 Жыл бұрын
Спасибо за серию видео по ООП! После просмотра все уложилось в голове и стало значительно понятнее!
@ivanlebedev7382
@ivanlebedev7382 Жыл бұрын
у Вас лучшие уроки по программированию из всех что я видел. большое спасибо!
@user-ic3su6qh6k
@user-ic3su6qh6k 3 жыл бұрын
Спасибо за ваш труд. Наглядно, не спеша и не тараторя и все понятно. Большое спасибо.
@vinter_man
@vinter_man 2 жыл бұрын
Спасибо, это был очень качественный мини-курс. Однозначно, лайк, подписка и уважение+ )))
@msc_Noname
@msc_Noname 2 жыл бұрын
Впервые столкнулась с понятиями полиморфизма, инкапсуляции и многого другого на этих уроках. Вау!
@user-mk3ro9er9r
@user-mk3ro9er9r Жыл бұрын
Боже, спасибо что есть такие люди как Вы!
@iliaplotnikov2167
@iliaplotnikov2167 2 жыл бұрын
Отличный урок, все понятно, а что не понятно - стало понятно по ходу видео. 👍
@gis6190
@gis6190 2 жыл бұрын
Очень хорошие уроки. Про перегрузку операторов тоже хотим.
@EvgeniySakharov
@EvgeniySakharov Жыл бұрын
Отличный контент. Про перегрузку тоже надо знать. Запишите пожалуйста про перегрузку методов. Спасибо.
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Ссылка на ПОЛНЫЙ курс ООП из ТРЕХ видео: kzbin.info/aero/PLNi5HdK6QEmX9fxp3_IBFx1O5tiTmKlYm И созданием профессиональной программы в ООП стиле: kzbin.info/aero/PLNi5HdK6QEmUIkR63RLqkECTCUwThQtcN
@01011968Desgner
@01011968Desgner 3 жыл бұрын
Круто сработано! Материал отлично зашел! Спасибо!
@grriimx
@grriimx 2 жыл бұрын
Круто. И посмеялся, и усвоил инфу которую не понимал. Лойс+подписка
@railsabbitovich408
@railsabbitovich408 3 жыл бұрын
круто! ) Да , хотелось бы про дескрипторы))
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Значит будет)
@ruslanruslan338
@ruslanruslan338 Жыл бұрын
Отличный урок про ООП, все ясно и понятно
@felixcriminibusnulluseritd7315
@felixcriminibusnulluseritd7315 3 жыл бұрын
Подписчиков тебе в карму автор!! Очень качественный материал
@user-jq3fq8mb4o
@user-jq3fq8mb4o 2 жыл бұрын
Огромное спасибо! Посмотрел двух других преподавателей пайтона, у которых тоже есть талант к обучению, но здесь все выражено реально максимально понятно и доступно! Два дня бился с декоратором @property, реально не мог из текста и видео понять, что это и зачем нужно, но после этого видео реально все встало на места.
@antonpython8059
@antonpython8059 Жыл бұрын
как по мне все же нагляднее по старинке : get_a() set_a()
@godgive994
@godgive994 Жыл бұрын
Действительно годно.. Спасибо!
@leonidgarnovskey9883
@leonidgarnovskey9883 6 ай бұрын
Спасибо за курс,прошел как базовый так и ооп благодаря автора ! больший ему респект)))
@user-dp7sv9pj3f
@user-dp7sv9pj3f 2 жыл бұрын
Спасибо! Понятно, доступным языком!.
@otamurodmuminov188
@otamurodmuminov188 3 жыл бұрын
Отличный урок. Очень понравился
@user-oi1zl6de8i
@user-oi1zl6de8i 2 жыл бұрын
Автор - красаучег! Спасибо.
@user-og6bl3of5w
@user-og6bl3of5w 2 жыл бұрын
Спасибо большое! Лайк Про дескрипторы урок хотелось бы :]
@brutsmart
@brutsmart 2 жыл бұрын
Спасибо за труд. Годное видео
@user-ix7lb1sx4k
@user-ix7lb1sx4k 3 жыл бұрын
Здравствуйте. Зашел проголосовать за урок про декораторы.
@user-jx2bs3qt9y
@user-jx2bs3qt9y Жыл бұрын
Дай бог тебе здоровья!!!
@serga8543
@serga8543 Жыл бұрын
спасибо за видео
@vonmansfeld2244
@vonmansfeld2244 2 жыл бұрын
Отлично. Спасибо!
@iren__va
@iren__va 3 жыл бұрын
Класно пояснено!
@VladStone
@VladStone Жыл бұрын
урок бомба, спасибо огромное!
@ElenaVi93
@ElenaVi93 7 ай бұрын
Спасибо за урок 👍🏼
@kinoshka453
@kinoshka453 5 ай бұрын
Спасибо за курс
@user-jm3dy9ms3u
@user-jm3dy9ms3u Жыл бұрын
отличный курс !
@user-ek2gf5yt8u
@user-ek2gf5yt8u 2 жыл бұрын
спасибо за видео управился с тремя роликами по ооп примерно дней за 14 но если напрячься можно и дней за 7
@evalinor
@evalinor 2 жыл бұрын
"Изменим значение констант" =) А так спасибо, очень хорошие уроки =)
@antonpython8059
@antonpython8059 Жыл бұрын
Да, это немного встряхнуло )
@shortvideos9955
@shortvideos9955 Жыл бұрын
Но это происходит только в праздничные дни, чтобы получить повышенный Level)
@juliaweinstein3133
@juliaweinstein3133 2 жыл бұрын
Спасибо огромное!!
@slavaseredenko4846
@slavaseredenko4846 2 жыл бұрын
Только вот начался этот урок и я услышал выражение "Это будет не по ПЕП". Хм, что такое ПЕП!? Нашел в интернетах статью об этом преславутом Пеп8. Прочитал, теперь знаю намного больше. Спасибо тебе за внимательность к деталям
@gob0
@gob0 Жыл бұрын
Увидел твой комментарий и решил посмотреть что такое Пеп8. Прочитал, теперь знаю намного больше. Лол)
@user-rl7dv8qn7z
@user-rl7dv8qn7z 3 жыл бұрын
Голосую за перегрузку оператора!!!!
@dmiv2895
@dmiv2895 2 жыл бұрын
Конечно нужен урок
@mr.vsadnik-__-5102
@mr.vsadnik-__-5102 2 жыл бұрын
Лучший!!!!
@rostislavmalyshev1775
@rostislavmalyshev1775 2 жыл бұрын
Спаасибо!
@symbol4572
@symbol4572 3 жыл бұрын
Спасибо!
@user-xw3km1bv5o
@user-xw3km1bv5o Жыл бұрын
Спасибо за урок! декоратор классметод может работать внутри наследованного класса, изменяя родительский?
@Dallas1460
@Dallas1460 Жыл бұрын
Дякую за роботу та відео 👍🔥 а можна кайлі лінукс урок .
@msmesh5666
@msmesh5666 2 жыл бұрын
Доброго времени суток, скажите пожалуйста, есть ли ещё отличия декораторов @classmethod от @staticmethod, кроме написания и того, что метод класса работает с классом, а статистический с классом через свои параметры?
@marumer1464
@marumer1464 2 жыл бұрын
спасибо!
@user-ll5bj1rc6q
@user-ll5bj1rc6q 3 жыл бұрын
Добрый день. Только подписался на Ваш канал. Все четко, спасибо за информацию. Возможно у Вас есть видео про композицию в ООП, если неи, возможно ли записать такой ролик? Спасибо
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Спасибо, нет, про композицию нет, скорее всего скоро сделаю, тема интересная.
@user-ll5bj1rc6q
@user-ll5bj1rc6q 3 жыл бұрын
Спасибо
@user-nx4oi5pt2u
@user-nx4oi5pt2u Жыл бұрын
@user_alex_
@user_alex_ 8 ай бұрын
👍👍👍👍👍👍👍👍👍👍👍👍👍👍
@proxonq6968
@proxonq6968 3 жыл бұрын
Видео курсы ТОП!!! А есть вопрос такой в pycharm debug как включить а то пишет "Frames are not available" что делать?
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Спасибо! Вы наверно не правильно работаете с точками останова, поставьте точку останова(между нумерацией строк и строкой кода).
@user-znamenskii
@user-znamenskii 2 жыл бұрын
Если запускать метод set_cls_field через имя экземпляра, то он не срабатывает. Не могли сказать как это исправить?
@harlok13
@harlok13 Жыл бұрын
здравствуйте) а почему в инициализаторе имя класса указано явно? и еще такой вопрос, разве стоит использовать isinstance для проверки на тип int? ведь булева значения также пройдут. буду благодарен за ответ
@harlok13
@harlok13 Жыл бұрын
спасибо) аналогия с игрой хорошо илюстрирует примеры использования
@andreweutuchenko9107
@andreweutuchenko9107 3 жыл бұрын
Получается мы инкапсулируем переменную, чтобы ее нельзя было изменить, но при этом setter дает нам возможность ее изменять так-же как будто инкапсуляции и не было?
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Да, только одно уточнение, код в сеттере препятствует присвоению не корректного значения, или сеттера вообще может не быть
@user-kn5ip9lr6r
@user-kn5ip9lr6r Жыл бұрын
Спасибо. Цикл видео называется "с нуля до junior". Будут ли еще видео в этом плейлисте или всего этого уже достаточно для уровня Junior?
@PythonHubStudio
@PythonHubStudio Жыл бұрын
Знаний питон достаточно, осталось выбрать сферу где вы хотите быть джуниором, и изучить эти фреймворки. Например, для веб разработки на питон, нужно: python, фреймворк Django(поверхностно), реляционная база данных, например postgres. Вообщем, Джуниор должен что-то уметь делать на простом уровне
@user-kn5ip9lr6r
@user-kn5ip9lr6r Жыл бұрын
@@PythonHubStudio спасибо большое. У вас хорошо получается объяснять. Развивайте канал и дальше
@obsessivedisordeable
@obsessivedisordeable 2 жыл бұрын
почему вы сначала используете переменную _lvl, а потом запрашиваете вывод просто lvl? это же получается незаданная переменная, разве нет? у меня ошибку выдал, когда я пыталась повторить ваш код
@digitaIdevil
@digitaIdevil 8 ай бұрын
Почему то строчка __slots__ конфликтовала со всем кодом и выдавала ошибку 'lvl' in __slots__ conflicts with class variable
@konstantinkuznetsof1217
@konstantinkuznetsof1217 2 жыл бұрын
спасибо за интересное видео. но нужна помощь. пытаюсь повторять то что вы делаете в видео, для лучшего запоминания, полностью скопировал ваш код и при запуске программа выдает "" добиться изменения уровня как у вас не получилось, где может быть ошибка, подскажите пожалуйса
@knarg4682
@knarg4682 4 ай бұрын
Попробуйте написать x.lvl += 5 и понять, почему получилось то, что получилось.
@konstbespr619
@konstbespr619 3 жыл бұрын
Расскажи пожалуйста про конструкцию if __name__ == __main__:
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Видео на канале "Импорт модулей" где-то с 15й минуты
@martincimonyan9645
@martincimonyan9645 2 жыл бұрын
а для чего перменная в классе подчёркнута с двух сторон ? (__slots__)
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Специальный атрибут, в котором перечисляются имена переменных разрешенных в классе, создание других вызовет ошибку
@brndk-games
@brndk-games 2 жыл бұрын
Ничего не понятно, но очень интересно)
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Круто) но жаль, мне(
@kayuttv8231
@kayuttv8231 Жыл бұрын
Объясните пожалуйстп, почему __slots__ пишеться с двойным подчеркиванием слева и справа. И для чего это нужно. Заранее спасибо)
@PythonHubStudio
@PythonHubStudio Жыл бұрын
Инкапсулированный атрибут, благодаря подчеркиваниям вначале, а в конце - для симметрии, чтоб не путать со своими. Как-то так...
@kayuttv8231
@kayuttv8231 Жыл бұрын
@@PythonHubStudio Вроде понял, спасибо.
@misha8280
@misha8280 2 жыл бұрын
А для чего __LVL, __HEALTH, __slots__? И что это такое? А так все три урока. 5 звезд) Хотелось бы курс на степик)
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Какая разница на степик или тут) ничего не меняется, только на степик, почему-то берут копейки за то что должно быть в доступе бесплатно. Я вроде бы объясненил что эти переменные значат
@misha8280
@misha8280 2 жыл бұрын
@@PythonHubStudio На степик просто задачи, а в интернете сугубо по ООП толковых задач я не нашёл. И в ролике я не до конца просто понял что обозначают. Но уже, загуглив, все разобрал. __LVL, __HEALTH - это инкапсулируемые атрибуты класса(которые будут использоваться в classmethod), а __slots__ - это список разрешенных свойств класса
@user-rx6fk9vk4s
@user-rx6fk9vk4s 2 жыл бұрын
Урок супер👍. Я не понял только одно, как именно выбирается декоратор.
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Не много не понял вопроса..., под ваши нужды
@user-rx6fk9vk4s
@user-rx6fk9vk4s 2 жыл бұрын
@@PythonHubStudio Как выбирается декоратор к конкретной функции. Это рандомное выражение через @ или декораторы вшиты в сам пайтон и каждый может присвоен к определенным функциям. Надеюсь смог сформировать вопрос)
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Эти декораторы вшиты про них это видео, можно создавать свои про это есть в уроке 7часовом(без ООП правда) и через декораторы часто нужно работать с библиотеками, фреймворками (они там уже "готовые" )
@user-rx6fk9vk4s
@user-rx6fk9vk4s 2 жыл бұрын
@@PythonHubStudio спасибо большое за ответ, я уже смотрю 7 часовой курс👍
@knocker6970
@knocker6970 2 жыл бұрын
Урок понравился . Не понравилось то , что весь код на Pycharm пишу аналогично. Но при попытке обойти инкапсуляцию у меня вызывается ошибка. Декораторы не помогают и вообще не помогает ничего, никакие изменения кода. Даже get_lvl. Type Error и все, Досвидание! Хоть , что делай но ничего не получиться
@antonpython8059
@antonpython8059 Жыл бұрын
Глупости.
@user-gp6yj5or7u
@user-gp6yj5or7u 3 жыл бұрын
print(print(x.get_lvl()))) принт в принт что делает? Зачем так используется?
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Та то случайно)
@user-gp6yj5or7u
@user-gp6yj5or7u 3 жыл бұрын
@@PythonHubStudio Я уж подумал, какой-то хитрый способ одновременно напечатать и переменную и её свойства ))
@arktikmoon
@arktikmoon 3 жыл бұрын
Вроде бы как всё наглядно и доступно но тяжело доходит. Видимо пример с игрой воспринимается как то мной не оч. С кошельками вообще норм зашел урок. Спасибо за дополнительные пояснения как делать нужно, а как не нужно и почему не нужно.
@PythonHubStudio
@PythonHubStudio 3 жыл бұрын
Пример игры, это так, чтоб был пример на чем рассказывать, главное саму механику декораторов и инкапсуляции уловить, тоже самое можно сделать в кошельке, просто реализация списания-пополнения будет другая
@slavaseredenko4846
@slavaseredenko4846 2 жыл бұрын
@@PythonHubStudio А мне отлично зашел пример с персонажами. Я прекрасно понимаю, зачем нужен тот или иной метод. Например, когда мы создаем класс мага, у него должно быть явно меньше очков прочности чем у танка. Я даже добавил себе показатели силы, выносливости, урона. Прямо уже готовый персонаж получился по характеристиками, только прилепить к игре и в путь. Спасибо за пример
@aleksy920
@aleksy920 Жыл бұрын
Не понимаю зачем запрещать доступ к объекту инкапсулированием, если тут же разрешаешь через property и setter?
@PythonHubStudio
@PythonHubStudio Жыл бұрын
В методах вы можете прописать нюансы доступа к нему
@nazarpark32
@nazarpark32 2 жыл бұрын
Как это всё запомнить!? :(
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Практика
@hopelesssuprem1867
@hopelesssuprem1867 2 жыл бұрын
за видео спасибо, но называть это полным курсом по ООП? Смешно)
@bratka4636
@bratka4636 2 жыл бұрын
Написал код по твоему видео ТОЧЬ В ТОЧЬ! НЕ ПОНИМАЮ ЧТО ЕМУ НЕ ХВАТАЕТ ( ОШИБКА НЕТУ АТРИБУТА ХОТЯ ОН УКАЗАН!) from datetime import datetime as dt class Player: __LVL, __HEALTH = 1, 100 __slots__ = ['__lvl', '__health', '__born'] def __init(self): self.__lvl = Player.__LVL self.__health = Player.__HEALTH self.__born = dt.now() # Декораторы используются в ООП при наличии двух одинаковых методов ( def lvl ) # чтобы пайтон знал к чему обращаться в нужный момент @property # Decorator property def lvl(self): return self.__lvl @lvl.setter #SETTER Устанавливает значение def lvl(self, numeric): self.__lvl += numeric # Декоратор property может существовать один а setter без property НЕТ! # При вызове МЕТОДА не нужно указывать "()" так как он маскируется под свойство экземпляра x = Player() print(x.lvl) x.lvl = 5 print(x.lvl)
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
В __slots__ по два подчеркивания нужно
@bratka4636
@bratka4636 2 жыл бұрын
@@PythonHubStudio Нашёл проблему , оказалось в __init__() не было двух слешей "__init" Сори за беспокойство Ps: дефолтный тупёж )))))
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
А это я и не заметил....))
@bratka4636
@bratka4636 2 жыл бұрын
@@PythonHubStudio не знаю на 100% (я же только как начинаю учить Питон ) но думаю что это частая проблема)))) (синтаксис)
@PythonHubStudio
@PythonHubStudio 2 жыл бұрын
Очень частая, чтоб было проще среда разработки pycharm или vscode
@vladkrolik2700
@vladkrolik2700 2 жыл бұрын
не много поплыл на этом уроке
@maiorchiks3107
@maiorchiks3107 2 жыл бұрын
не зашло
@Beningo_Rossi
@Beningo_Rossi Жыл бұрын
Привет, уроки топ, но впервые столкнулся с проблемой. Почему у меня не повышается уровень после присвоения ему нового значения, а именно Player.set_cls_field(10) , мне так же выдает 1 уровень, может я невнимательный, но вроде всё правильно сделал. 17:00 Основной код: from datetime import datetime as dt class Player: _LVL, __HEALTH = 1, 100 __slots__ = ['__lvl', '__health', '__born'] def __init__(self): self.__lvl = Player._LVL self.__health = Player.__HEALTH self.__born = dt.now() @property def lvl(self): return self.__lvl, f'{dt.now() - self.__born}' @lvl.setter def lvl(self, numeric): self.__lvl += numeric if self.__lvl >= 100: self.__lvl = 100 @classmethod def set_cls_field(cls, lvl=1, health=100): cls.__LVL = lvl cls.__HEALTH = health Код написанный уже после наследования: from Decorator import Player # Decorator названия файла с основным кодом Player.set_cls_field(10) x = Player() print(x.lvl)
Первые шаги в ООП: класс, объект, self
1:00:45
Python Russian
Рет қаралды 31 М.
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 1,1 МЛН
СНЕЖКИ ЛЕТОМ?? #shorts
00:30
Паша Осадчий
Рет қаралды 5 МЛН
Заметили?
00:11
Double Bubble
Рет қаралды 3,6 МЛН
Can we build this Fancy Slider Nav with Nestable Slider in Bricks Builder & Wordpress
22:19
СТАТИЧЕСКИЕ МЕТОДЫ(STATICMETHOD) И ПЕРЕМЕННЫЕ В ООП ПИТОНА
18:57
ООП: Инкапсуляция в python
51:12
Python Russian
Рет қаралды 12 М.
6/6 OOP & Classes in Python: Properties, Getter, Setter and Deleter | Attribute Validation and More
13:48
Python @staticmethod
15:38
luchanos
Рет қаралды 1 М.