🔥Более 180 практических заданий по ООП и все материалы по данному курсу находятся здесь: stepik.org/a/114354 По промокоду EGOROFF можно получить 10% скидки на данный курс
Артем, спасибо тебе огромное) это гениальное видео) Правда, чтобы досконально все понять, мне потребовалось его пересмотреть раз 40 в течение года) На самом деле все крайне доходчиво и понятно!!
Это точно пранк. Аахахахх... Сижу на уроке уже 30 мин. ловлю каждое слово про каждую операцию, все осмысливаю по 10 раз, запоминаю. А в итоге все можно записать в одну строку. Это круто. Спасибо, что объясняете все так тщательно и выполняете операции разными способами. Ваши уроки помогают постичь суть языка и разобраться в самых тонких нюансах. Лайк
После второго просмотра, всё становится более - менее понятно. Декоратор property помогает избавиться от двойной функциональности в коде и облегчает работу. Самое главное запомнить синтаксис, но тут уже нужна практика. Спасибо за видео.
До 3:00, по сути, описывается (запутанно) три способа задать свойство: 1) balance = property(fget=get_balance, fset=set_balance, fdel=del_balance) 2) balance = property().getter(get_balance).setter(set_balance).deleter(del_balance) 3) balance = property(get_balance, set_balance, del_balance) Далее с декораторами производится поэтапная загрузка свойства функциями, без их самостоятельного определения. Но зачем? Спрятать методы, оставив свойства, можно через private-наименования (__get_balance). Основные парадигмы Питона: "Явное лучше неявного, простое лучше сложного". Конечно, это все субъективно. Полезно на таких заморочках понимать, как это работает в принципе, чтобы не впадать в ступор, увидев такое в чьем-то проекте. Но для себя я пока не вижу смысла в таких конструкциях...
ебаать, спасибо тебе большое, потому что, по сути, когда описывается преобразование всех этих свойств через поэтапное обращение друг к другу, то реализуется второй метод, который, к сожалению, автором описан не был. потому что я пытался понять, как это все работает через первый метод, который и был описан в прошлом видео, но, естественно, приходил в абсолютное недоумение. в конечном счете, потратив час, я и сам пришел к тому, что все сводится ко второму методу, потому что в противном случае ничего не должно работать, но твое пояснение внесло окончательную ясность.
но почему, если мы вновь обращаемся к прежним свойствам, то они не отрабатывают полностью? например, для setter мы должны обратиться к getter и получить return, но в таком случае должно вывестись print с get, чего не происходит.. почему??
Какое гениальное объяснение! показать как все сложно сделать без новых знаний, а затем показать как все просто с новыми знаниями. Топовый уровень преподавания)
Сложная тема, дошло не сразу. Возникла мысль: впервые не понятно сразу, как объяснил Артем - странно, что-то со мной не так)) Даже пришлось загуглить доп материал. Почитав комменты, поняла, что я не одна такая. Артем, спасибо за уроки, за труд, лучшие материалы!
Из этого видео провалился в урок по декораторам. Из него провалился в урок про замыкания. Суммарно потратил 2 дня, чтобы понять/переварить всю информацию, а теперь сижу и понимаю, насколько это всё просто, но всё же не сразу доходит идея, для чего нужны эти "инструменты".
@@egoroffchannel Прошёл заново уроки про декораторы и замыкания (4 урока) , потом ещё раз этот и всё стало понятно в моем сознании что откуда и зачем... потом вернуться это не обо мне )))
обрадовался, что наконец-то нашел классного преподавателя, но на каком-то этапе все равно все сливается в кашу и слова становятся просто набором звуков...
тема не очень простая и еще дополнительно требует знания декораторов. могу дополнительно снять видео, где на практике вновь покажу как работать с гетерами и сеттерами через свойства
@@egoroffchannel моё мнение - такие темы нужно то ли делить на более маленькие видео, для более эффективного усвоения. Ведь вроде бы всё и понятно, но вот что бы проследить всю линию изменения кода... Ух... очень нужно постараться. Мозг не успевает и не понимает - зачем это делается. Ну и конечно нужно в разы больше практических задач, просто в десятки раз
Артём здравствуйте. Еще раз спасибо за Ваши полезные, а самое главное понятные уроки. Про Вас рассмотреть возможность описать property как клас. Думаю тогда (таким как я) будет легче понять этот объект. Прошу также по возможности коснуться property в Вашем курсе по ООП.
Суть без технических деталей: 1. Задолбаешься в 2 местах имена менять, поэтому свойства удобнее писать над функцией; 2. Задолбаешься вспоминать названия функций, поэтому для стандартных действий названия не нужны, вместо них название атрибута, а сверху обозначение что эта функция по стандарту делает.
Заворачивали, заворачивали и на финише завернули мне мозги. Теперь пару дней буду раскладывать всё по полочкам чтобы ничего не упустить для полного понимания.
@@traffox геттеры и сеттеры в других языках программирования нужны, чтобы получать доступ к private полям(свойствам). Просто принято, что для защиты данных, к полям(свойствам) классов применять private модификатор (т.е. инкапсулировать). Тут приходят геттеры и сеттеры, которые помогают получать доступ к private полям так, как пожелает этого разработчик программы. Надеюсь, вы поняли)
@@РусланСальманов-ч1в вы говорите, что setter & getter нужны для доступа к приватным свойствам объекта. Свойства объекта ранее сделали приватными чтобы их защитить, а так? . а смысл тогда опять в этой защите, если в них можно получить доступ также через сеттеры и геттеры???
Посмотрел уроки по замыканиям и декораторам. В принципе понял, но возник вопрос касательно 10:00 Когда мы присваиваем методу Сеттер функцию с отличным названием, то почему при обращении к ней, она работает как Геттер? Ей передаются все методы из свойства myBalance?
у тебя есть свойство my_balence(в нем уже есть геттор) далее мы my_balence расширяем сеттером и сохраняем под именем set_balance Сам my_balence остался геттером Новое имя set_balance получило и геттер и сеттер
Было бы значительно понятнее, если бы я мог увидеть, как выгладит код декоратора, т.е в тот момент, когда мы декорируем баланс my_balance=property(my_balance) как это выглядит внутри
Странно что через класс можно получить доступ к "private методу" даже если передавая свой же класс как аргумент(self), ну а на property вызов через класс получается в пустую
Вы говорите что геттеры и сеттеры должны называться одинаково на 9:59, также есть подсказка что делеттер тоже называется my_balance. В итоге все функции должны называться одинаково?
Одно не понятно. Зачем нам с помощью геттеров, сеттеров, делиттеров получать доступ к защищенным и приватным аттрибутам, если мы изначально указываем, что данные аттрибуты нужны нам только для использования в пределах нашего класса или класса наследника, тем самым подразумевая, что к ним не нужно обращаться из публичного интерфейса?
Тема хорошая, но не хватает заданий по отдельным темам на степике. Чувствую, что еще долго буду использовать этот канал, как справочное пособие по python)
Здравствуйте. А зачем на 3.30 декораторы, просто ранее Вы говорили, что декораторы навешивают для расширения способностей функции (свойства)? Получается у декоратора есть иные цели?
Прошу заметить что мы создаем свойства под соответсвующими функциями.Также рекоммендую скопировать код в PyCharm, чтобы проще было разглядеть его. class Circles: def __init__(self, radius): self.__radius = radius def radius(self): return self.__radius radius = property(radius) my_radius = radius # Сохраняем свойство в нвую переменную,чтобы избежать конфликта def radius(self, value): self.__radius = value radius = my_radius.setter(radius) my_radius = radius # Мы обновляем my_radius, чтобы в нем сохранился сеттер def radius(self): del self.__radius radius = my_radius.deleter(radius) Я взял класс попроще, чтобы не нагружать
А если не пользоваться "синтаксическим сахаром" и декорировать через строчку, дабы лучше понять процесс декорирования, возникает вопрос. До делитора полет нормальный, my_balance расширяем сеттером, а вот если далее тоже самое делать для делитора, и использовать ту же переменную my_property_balance, то перестает работать сеттер. То есть мы перезатираем свойство my_balance с сеттером? Если создать ещё одну переменную my_property_balance2, и как основу для делитора использовать её, то все работает. Но создавать каждый раз новые переменные..может я не туда клоню? class BankAccount: def __init__(self, name, balance): self.__name = name self.__balance = balance def my_balance(self): return self.__balance my_balance = property(my_balance) #Первая переменная my_property_balance1 = my_balance def my_balance(self, value): self.__balance = value my_balance = my_property_balance1.setter(my_balance) #Вторая переменная my_property_balance2 = my_balance def my_balance(self): del self.__balance my_balance = my_property_balance2.deleter(my_balance)
Аналогичный моему вопрос уже задавали, но ответа не было. Почему обращаться по имени метода-это плохо, а обращаться по точно такому же имени, но у свойства это хорошо. Только ради того чтобы скобки в конце названия не ставить?
@@egoroffchannel конечно вы так не говорили, это я неправильно сформулировал свою мысль. я очень ценю ваше видео и то как вы подаете материал. Спасибо вам.
Здравствуйте. На 1.30 мы объявляем объект(думаю это переменная) new_balance и определяем этому объекту property, но вот дальше непонятно. Property это служебное слово или это тоже переменная, если последняя то почему pycharm не ругается (мы ведь её не определили
@@ГерманРыков-ъ6в тоже не могу разобраться. Смотрел эту тему в другом источнике. В итоге property() называют и классом и свойством (хотя не понятно значение термина свойство) и методом, а на самом деле получается что это просто функция для декорирования?
Бесспорно самый сложный видос на всем этом канале. Нужно много раз с разницей в несколько дней пересмотреть, чтобы понять смысл. Я как первый раз как посмотрел - вообще шок был, несмотря на то, что до этого весь курс по основам питона и все ООП пересмотрел по много-много раз. В любом случае, лучшего объяснения, чем это, на ютубе нет.
в таких случаях помогает рассмотрение проблемы сразу в нескольких источниках, она часто бывает подана совершенно по-разному, и из этой совокупности довольно быстро в итоге формируется понимание.
Шаг 1 - my_balance = property() здесь мы в переменную присвоили экземпляр класса Property Шаг 2 - my_balance = my_balance.getter(get_balance) здесь строка my_balance.getter(get_balance) по сути равна строке property.getter(get_balance) и она присвоилась в переменную my_balance и переписала ее значение (правильно понял?) В след строчке mybalance = my_balance.setter(set_balance) равно такой строчке? mybalance = my_balance.getter(get_balance).setter(set_balance) т.к. вместо mybalance уже подставляет значение, которое было присвоено переменной mybalance на шаге 2. Я все правильно понял? Если да и это краткая запись, то что за странный синтаксис, с присвоением переменной методов класса и как python понимает что при обращении к элементу a.my_balance необходимо именно вызвать именно метод getter? Если моя логика верна то в атрибут my_balance класса BankAccount в итоге будет лежать следующее: mybalance = my_balance.getter(get_balance).setter(set_balance).deleter(delete_balance) И как при обращении python понимает, что от него надо? Есть какая-то аналогия? Например со строками можно взывать методы следующим образом a = 'Hello my name is Python' a.replace('H', 'h').replace('P', 'p').replace('is', 'isn't')
Как я понял названия всех методов должны совпадать. А здесь еще и приводится обоснование почему так должно быть (с этой частью сам не очень разобрался).
А почему ты написал "@my_balance.setter", но не написал "@my_balance.getter". Почему его не надо писать, а сеттер надо? Не совсем понял этот момент просто.
Прежде чем смотреть это видео нужно посмотреть видео о декораторах. Ок. Иду на видео о декораторах. Там он говорит что прежде чем смотреть видео о декораторах, нужно посмотреть видео о замыкании. Ок. Включаю видео о замыкании. А там мне говорят вспоминай предыдущий урок. Кошмар.
раза 3 посмотрел и про декораторы и про замыкания. все равно ничего не понял. главный вопрос ЗАЧЕМ? зачем создавать __атрибут, потом на него писать методы и эти методы сувать под декоратор чтобы потом получать значение атрибута как свойство ну и напиши атрбиту без __ зачем закрывать доступ чтобы потом его все равно дать? . Попробуй приводить примеры жизненные, ибо в конце когда ты всё повторил у меня ваще крыша поехала как у Гомера в голове обезьянка с тарелками.
a = BancAccount("www", 333) a.my_balance # сработает setter, выведет 333 a.my_balance = 444 # сработает getter, значение станет = 444 del a # deleter нужно использовать таким образом или как то иначе?
Я запутался. Что такое property? В предыдущем видео, упоминалось что это класс, но имена классов должны начинаться с большой буквы, разве нет? Здесь вначале его начали называть свойством. Но я ни разу не сталкивался с таким термином на этом канале. Что такое свойство? Потом оказалось что это вообще декоратор, а декоратор по сути это просто функция. Путаница в понятиях сильно мешает понять материал. На некоторых обучающих площадках (не здесь) атрибуты класса называют и атрибутами и свойствами и данными и переменными и каждый называет как хочет. В своё время из-за этого очень тяжело было понять ООП, так и бросил не разобравшись.
🔥Более 180 практических заданий по ООП и все материалы по данному курсу находятся здесь:
stepik.org/a/114354
По промокоду EGOROFF можно получить 10% скидки на данный курс
Артем, спасибо тебе огромное) это гениальное видео) Правда, чтобы досконально все понять, мне потребовалось его пересмотреть раз 40 в течение года)
На самом деле все крайне доходчиво и понятно!!
Это точно пранк. Аахахахх... Сижу на уроке уже 30 мин. ловлю каждое слово про каждую операцию, все осмысливаю по 10 раз, запоминаю. А в итоге все можно записать в одну строку. Это круто. Спасибо, что объясняете все так тщательно и выполняете операции разными способами. Ваши уроки помогают постичь суть языка и разобраться в самых тонких нюансах. Лайк
После второго просмотра, всё становится более - менее понятно. Декоратор property помогает избавиться от двойной функциональности в коде и облегчает работу. Самое главное запомнить синтаксис, но тут уже нужна практика. Спасибо за видео.
До 3:00, по сути, описывается (запутанно) три способа задать свойство:
1) balance = property(fget=get_balance, fset=set_balance, fdel=del_balance)
2) balance = property().getter(get_balance).setter(set_balance).deleter(del_balance)
3) balance = property(get_balance, set_balance, del_balance)
Далее с декораторами производится поэтапная загрузка свойства функциями, без их самостоятельного определения.
Но зачем? Спрятать методы, оставив свойства, можно через private-наименования (__get_balance).
Основные парадигмы Питона: "Явное лучше неявного, простое лучше сложного". Конечно, это все субъективно. Полезно на таких заморочках понимать, как это работает в принципе, чтобы не впадать в ступор, увидев такое в чьем-то проекте.
Но для себя я пока не вижу смысла в таких конструкциях...
ебаать, спасибо тебе большое, потому что, по сути, когда описывается преобразование всех этих свойств через поэтапное обращение друг к другу, то реализуется второй метод, который, к сожалению, автором описан не был. потому что я пытался понять, как это все работает через первый метод, который и был описан в прошлом видео, но, естественно, приходил в абсолютное недоумение. в конечном счете, потратив час, я и сам пришел к тому, что все сводится ко второму методу, потому что в противном случае ничего не должно работать, но твое пояснение внесло окончательную ясность.
но почему, если мы вновь обращаемся к прежним свойствам, то они не отрабатывают полностью? например, для setter мы должны обратиться к getter и получить return, но в таком случае должно вывестись print с get, чего не происходит.. почему??
Какое гениальное объяснение! показать как все сложно сделать без новых знаний, а затем показать как все просто с новыми знаниями. Топовый уровень преподавания)
Сложная тема, дошло не сразу. Возникла мысль: впервые не понятно сразу, как объяснил Артем - странно, что-то со мной не так)) Даже пришлось загуглить доп материал. Почитав комменты, поняла, что я не одна такая. Артем, спасибо за уроки, за труд, лучшие материалы!
Из этого видео провалился в урок по декораторам. Из него провалился в урок про замыкания. Суммарно потратил 2 дня, чтобы понять/переварить всю информацию, а теперь сижу и понимаю, насколько это всё просто, но всё же не сразу доходит идея, для чего нужны эти "инструменты".
я неделю это говно попытаюсь понять,и нихера еще не понял,зачем оно надо,итак сеттеры работают ,бл
78 видео уроков все шло отлично... и тут я завис.
сложная тема, как вариант можно пропустить и потом к ней вернутся
у меня тоже самое
@@egoroffchannel как по мне , все легко
@@egoroffchannel Прошёл заново уроки про декораторы и замыкания (4 урока) , потом ещё раз этот и всё стало понятно в моем сознании что откуда и зачем... потом вернуться это не обо мне )))
@@Asmolovskyi неважно,что за язык программирования ,главное кто его учит)
Спасибо, друг! Очень доходчиво и явно со знанием дела
Дело в том, что не успеваешь следить за мыслью, откуда что берется и куда. Если бы была нарисована схемка, то было бы проще)
Артем, Браво! Спасибо большое.
обрадовался, что наконец-то нашел классного преподавателя, но на каком-то этапе все равно все сливается в кашу и слова становятся просто набором звуков...
тема не очень простая и еще дополнительно требует знания декораторов.
могу дополнительно снять видео, где на практике вновь покажу как работать с гетерами и сеттерами через свойства
@@egoroffchannel Да пожалуйста, очень непростая тема!
@@egoroffchannel тяжёлая тема)
@@egoroffchannel моё мнение - такие темы нужно то ли делить на более маленькие видео, для более эффективного усвоения. Ведь вроде бы всё и понятно, но вот что бы проследить всю линию изменения кода... Ух... очень нужно постараться. Мозг не успевает и не понимает - зачем это делается. Ну и конечно нужно в разы больше практических задач, просто в десятки раз
_Отлично! Благодарю за урок!_
Супер понятно !Лучшие обучающие видео по пайтону 😍
Вы гений объяснения! Лайк
Артём здравствуйте. Еще раз спасибо за Ваши полезные, а самое главное понятные уроки. Про Вас рассмотреть возможность описать property как клас. Думаю тогда (таким как я) будет легче понять этот объект. Прошу также по возможности коснуться property в Вашем курсе по ООП.
Отличное объяснение! Спасибо. Раньше обходил эти вещи стороной. Теперь понятно.
Суть без технических деталей:
1. Задолбаешься в 2 местах имена менять, поэтому свойства удобнее писать над функцией;
2. Задолбаешься вспоминать названия функций, поэтому для стандартных действий названия не нужны, вместо них название атрибута, а сверху обозначение что эта функция по стандарту делает.
Заворачивали, заворачивали и на финише завернули мне мозги. Теперь пару дней буду раскладывать всё по полочкам чтобы ничего не упустить для полного понимания.
Я один мало понял зачем это нужно?
Я тоже пока не понимаю сферу применения этого функционала, но если понадобится, то в голове всплывёт )
@@traffox геттеры и сеттеры в других языках программирования нужны, чтобы получать доступ к private полям(свойствам). Просто принято, что для защиты данных, к полям(свойствам) классов применять private модификатор (т.е. инкапсулировать). Тут приходят геттеры и сеттеры, которые помогают получать доступ к private полям так, как пожелает этого разработчик программы. Надеюсь, вы поняли)
На питоне не знаю зачем, но например на джаве, для доступа к приватным переменнам нужно использовать геттер и сеттер. Но вот почему - не понимаю.
@@РусланСальманов-ч1в вы говорите, что setter & getter нужны для доступа к приватным свойствам объекта. Свойства объекта ранее сделали приватными чтобы их защитить, а так? . а смысл тогда опять в этой защите, если в них можно получить доступ также через сеттеры и геттеры???
Это полностью про синтаксический сахар - в глобальной области скобочки типа не нужны, присваивание через равно, и вместо трех имен на три функции одно
Отличное объяснение.
Посмотрел уроки по замыканиям и декораторам. В принципе понял, но возник вопрос касательно 10:00
Когда мы присваиваем методу Сеттер функцию с отличным названием, то почему при обращении к ней, она работает как Геттер?
Ей передаются все методы из свойства myBalance?
вся эта хрень нужна (как я понял) для того чтобы не было багов в коде!
у тебя есть свойство my_balence(в нем уже есть геттор)
далее мы my_balence расширяем сеттером и сохраняем под именем set_balance
Сам my_balence остался геттером
Новое имя set_balance получило и геттер и сеттер
Было бы значительно понятнее, если бы я мог увидеть, как выгладит код декоратора, т.е в тот момент, когда мы декорируем баланс my_balance=property(my_balance) как это выглядит внутри
Странно что через класс можно получить доступ к "private методу" даже если передавая свой же класс как аргумент(self), ну а на property вызов через класс получается в пустую
Вы говорите что геттеры и сеттеры должны называться одинаково на 9:59, также есть подсказка что делеттер тоже называется my_balance. В итоге все функции должны называться одинаково?
На этом уроке захотелось бросить освоение ООП в Python :(
Одно не понятно. Зачем нам с помощью геттеров, сеттеров, делиттеров получать доступ к защищенным и приватным аттрибутам, если мы изначально указываем, что данные аттрибуты нужны нам только для использования в пределах нашего класса или класса наследника, тем самым подразумевая, что к ним не нужно обращаться из публичного интерфейса?
вово. зачем открывать доступ к тому, к чему ты не даешь доступ
правильно ли я понимаю, что проперти, это лишь для улучшения читаемости кода, чтобы не плодить множество сеттеров и геттеров?
Тема хорошая, но не хватает заданий по отдельным темам на степике. Чувствую, что еще долго буду использовать этот канал, как справочное пособие по python)
Здравствуйте. А зачем на 3.30 декораторы, просто ранее Вы говорили, что декораторы навешивают для расширения способностей функции (свойства)? Получается у декоратора есть иные цели?
Прошу заметить что мы создаем свойства под соответсвующими функциями.Также рекоммендую скопировать код в PyCharm, чтобы проще было разглядеть его.
class Circles:
def __init__(self, radius):
self.__radius = radius
def radius(self):
return self.__radius
radius = property(radius)
my_radius = radius # Сохраняем свойство в нвую переменную,чтобы избежать конфликта
def radius(self, value):
self.__radius = value
radius = my_radius.setter(radius)
my_radius = radius # Мы обновляем my_radius, чтобы в нем сохранился сеттер
def radius(self):
del self.__radius
radius = my_radius.deleter(radius)
Я взял класс попроще, чтобы не нагружать
А если не пользоваться "синтаксическим сахаром" и декорировать через строчку, дабы лучше понять процесс декорирования, возникает вопрос.
До делитора полет нормальный, my_balance расширяем сеттером, а вот если далее тоже самое делать для делитора, и использовать ту же переменную my_property_balance, то перестает работать сеттер. То есть мы перезатираем свойство my_balance с сеттером?
Если создать ещё одну переменную my_property_balance2, и как основу для делитора использовать её, то все работает. Но создавать каждый раз новые переменные..может я не туда клоню?
class BankAccount:
def __init__(self, name, balance):
self.__name = name
self.__balance = balance
def my_balance(self):
return self.__balance
my_balance = property(my_balance)
#Первая переменная
my_property_balance1 = my_balance
def my_balance(self, value):
self.__balance = value
my_balance = my_property_balance1.setter(my_balance)
#Вторая переменная
my_property_balance2 = my_balance
def my_balance(self):
del self.__balance
my_balance = my_property_balance2.deleter(my_balance)
А почему недоступен предыдущий урок 10?
Очень интересно, но не понятно зачем оно надо?.. Это если надо написать 0, то лучше пишите 1-1?
Это надо что бы наполнить контент. А в жизни такой шляпой почти никто не занимается.
ааааааааааааа мой мозг расплавился!
Аналогичный моему вопрос уже задавали, но ответа не было. Почему обращаться по имени метода-это плохо, а обращаться по точно такому же имени, но у свойства это хорошо. Только ради того чтобы скобки в конце названия не ставить?
где я говорил, что обращаться по имени метода плохо?
@@egoroffchannel конечно вы так не говорили, это я неправильно сформулировал свою мысль. я очень ценю ваше видео и то как вы подаете материал. Спасибо вам.
месяц назад освоил замыкания-декораторы-проперти, к этому моменту уже всё забыл без практики. блин
x.getter(90) ? Может быть имелось ввиду x.setter(90) ?
Здравствуйте! Хотел изучить пайтон, подскажите, с чего начать и сколько стоят ваши уроки, если будете преподавать
ни хрена не понятно, но очень интересно :)
Спасибо!
А где можно посмотреть исходный код класса Property?
stackoverflow.com/questions/17330160/how-does-the-property-decorator-work-in-python
Объясните пожалуйста, зачем вообще нужны свойства?
Скажите пожалуйста, @property можно декорировать только getter. да??
Спасибо
Здравствуйте. Прошу прошения за частые вопросы, но не могу понять почему на 1.49 нет "перезатирания" а в переменную new_balance все влезает?
Наверно потому что переменная стала свойством, и с ним перезатирание работает типа как в списке метод append, не затирает а добавляет. ИМХО
Здравствуйте. На 1.30 мы объявляем объект(думаю это переменная) new_balance и определяем этому объекту property, но вот дальше непонятно. Property это служебное слово или это тоже переменная, если последняя то почему pycharm не ругается (мы ведь её не определили
Ааааа property это функция.
@@ГерманРыков-ъ6в тоже не могу разобраться. Смотрел эту тему в другом источнике. В итоге property() называют и классом и свойством (хотя не понятно значение термина свойство) и методом, а на самом деле получается что это просто функция для декорирования?
Бесспорно самый сложный видос на всем этом канале. Нужно много раз с разницей в несколько дней пересмотреть, чтобы понять смысл. Я как первый раз как посмотрел - вообще шок был, несмотря на то, что до этого весь курс по основам питона и все ООП пересмотрел по много-много раз. В любом случае, лучшего объяснения, чем это, на ютубе нет.
спасибо большое)
в таких случаях помогает рассмотрение проблемы сразу в нескольких источниках, она часто бывает подана совершенно по-разному, и из этой совокупности довольно быстро в итоге формируется понимание.
хорошо бы это все задачками подкреплять. где бы взять такие задачки? чтобы по конкретным темам, а не все в кучу, когда уже повылетала треть из головы
я думаю какие задачки можно придумать и на степике их разместить
Шаг 1 - my_balance = property() здесь мы в переменную присвоили экземпляр класса Property
Шаг 2 - my_balance = my_balance.getter(get_balance) здесь строка my_balance.getter(get_balance) по сути равна строке
property.getter(get_balance) и она присвоилась в переменную my_balance и переписала ее значение (правильно понял?)
В след строчке mybalance = my_balance.setter(set_balance) равно такой строчке?
mybalance = my_balance.getter(get_balance).setter(set_balance) т.к. вместо mybalance уже подставляет значение, которое было присвоено переменной mybalance на шаге 2. Я все правильно понял?
Если да и это краткая запись, то что за странный синтаксис, с присвоением переменной методов класса и как python понимает что при обращении к элементу a.my_balance необходимо именно вызвать именно метод getter?
Если моя логика верна то в атрибут my_balance класса BankAccount в итоге будет лежать следующее:
mybalance = my_balance.getter(get_balance).setter(set_balance).deleter(delete_balance)
И как при обращении python понимает, что от него надо? Есть какая-то аналогия?
Например со строками можно взывать методы следующим образом
a = 'Hello my name is Python'
a.replace('H', 'h').replace('P', 'p').replace('is', 'isn't')
Что такое Свойства в данном контексте? Класс, атрибут, экземпляр класса, атрибут экземпляра - это всё было, а вот про свойства не помню)
свойства = property, это дословный перевод.
@@guesswho6684 спасибо, я уже это понял
А зачем нужно делать из функция свойства. Я просто не особо понимаю.
Плохо что нет ссылки на видео где упоминалось про декоратор.
Давай вставлю, можешь отрезок времени прислать?
@@egoroffchannel Полагаю, что ссылка на "python для начинающих" видео замыкание и две части декораторов.
Спасибо. Всё супер, а как вызвать делитер?
Функция del. Я показывал в предыдущем видео точно
от названия декоратора что либо зависит? или можно его было назвать как угодно?
Как я понял названия всех методов должны совпадать. А здесь еще и приводится обоснование почему так должно быть (с этой частью сам не очень разобрался).
Не пытайтесь понять это видео. Механика работы property не для новичков. Достаточно знать, что есть @property и они работают.
спасибо за совет
Большое спасибо!
А почему ты написал "@my_balance.setter", но не написал "@my_balance.getter".
Почему его не надо писать, а сеттер надо? Не совсем понял этот момент просто.
property принимает обязательный параметр, он так раз и getter
Прежде чем смотреть это видео нужно посмотреть видео о декораторах. Ок. Иду на видео о декораторах. Там он говорит что прежде чем смотреть видео о декораторах, нужно посмотреть видео о замыкании. Ок. Включаю видео о замыкании. А там мне говорят вспоминай предыдущий урок. Кошмар.
Лично я запутался. Каша стала гуще!!
где можно всю инфу по этой теме???? нихера не понятно
Когда продолжение 2048?Осталось немного)
на следующей недели
чтото ты тут намудрил))) лучше переснятьб оно еще и платное
ето не урок по ооп ето разговор просто.мне кажется подача материала все время становится менее понятна. как из за стени
раза 3 посмотрел и про декораторы и про замыкания.
все равно ничего не понял. главный вопрос ЗАЧЕМ?
зачем создавать __атрибут, потом на него писать методы и эти методы сувать под декоратор чтобы потом получать значение атрибута как свойство
ну и напиши атрбиту без __
зачем закрывать доступ чтобы потом его все равно дать?
.
Попробуй приводить примеры жизненные, ибо в конце когда ты всё повторил у меня ваще крыша поехала как у Гомера в голове обезьянка с тарелками.
вот где объяснение что такое свойство и тд,зачем этот декоратор хер пойми, никто на ютубе не объяснил нормально еще
Видео не очень(
Крайне неудачное объяснение!
@my_balance.deleter - как вызывать эту функцию в консоли?
a = BancAccount("www", 333)
a.my_balance # сработает setter, выведет 333
a.my_balance = 444 # сработает getter, значение станет = 444
del a # deleter нужно использовать таким образом или как то иначе?
Очень интересно, но ничего не понятно..............
Я запутался.
Что такое property?
В предыдущем видео, упоминалось что это класс, но имена классов должны начинаться с большой буквы, разве нет?
Здесь вначале его начали называть свойством. Но я ни разу не сталкивался с таким термином на этом канале. Что такое свойство?
Потом оказалось что это вообще декоратор, а декоратор по сути это просто функция.
Путаница в понятиях сильно мешает понять материал. На некоторых обучающих площадках (не здесь) атрибуты класса называют и атрибутами и свойствами и данными и переменными и каждый называет как хочет. В своё время из-за этого очень тяжело было понять ООП, так и бросил не разобравшись.
Поддерживаю как сейчас, поняли? Мне очень важно, буду благодарен, если объясните
Спасибо