🔥 Записывайся на курс по ООП: stepik.org/a/114354 📙 Там тебя ждет: ✔ более 180 практических заданий по ООП ✔ более 300 тестовых заданий на проверку материала ✔ более 6 часов видеоматериала ✔ текстовые материалы по урокам, примеры кода ✔ Доступ к закрытому чату с дружественной обстановкой ✔ Сертификат в случае успешного прохождения курса 🎁 По промокоду EGOROFF можно получить 10% скидки на приобретение данного курса
Привет, Артём! Ты очень досутпно объясняешь, благодарю! Продалжай в том же духе. Я еще надеюсь, что ты подробные видео сделаешь про сокеты, tkinter, pyqt, работу с бд, django и flask.
Здравствуйте, что-то я немного запутался. А для чего тогда нужно создавать это свойство геттер и сеттер через property, в чем смысл? Ведь получается мы вернулись к началу, снова сделали наш атрибут, как будто бы публичным. Не легче будет например в таких ситуациях просто убрать "__" и снова сделать ее публичной. Не знаю может из-за маленького опыта не понимаю смысл этих геттеров и сеттеров
Может, я неправильно предполагаю, но смысл например такой: в геттере или сеттере можно отправлять не просто запрос, а передавать параметром токен пользователя, и внутри метода класса проводить проверку токена на валидность. Тогда аутентифицированный пользователь получит доступ к переменной, а левый - нет.
когда ты просто напрямую изменяешь атрибут через дот нотацию то ты можешь написать туда любую чушь по типу текста, когда нужны числа, как и было показано в примере. чтобы не вводился текст и другая прочая фигня внутри класса пишут метод, который делают проверку на тип устанавливаемых данных. помимо проверки на тип данных можно напихать туда еще много всяких полезных плюшек, а через простую дотнатацию, т.е когда ты пишешь: d.balance = 10000 о никаких проверках и речи идти не можешь, но когда ты используешь какой-нибудь метод d.set_balance(10000) то в этот метод можно напихать всяких проверок, исключений, сообщений, короче много всякого добра. но писать такие длинные методы некамильфо и вообще не понятиям, поэтому это самое волшебная функция (или декоратор) property объединяет первое со вторым - т.е. ты залезаешь в функцию класса d.set_balance() но с помощью дотнотации как ты делал изначально d.balance = ... если я все, конечно, правильно понял.
Здравствуйте. На 9.58 мы вызываем del через обращение к внутреннему методу, а до этого обращались к свойствам, но ведь и del прописан в свойствах. Вопрос у меня общий, как программа интерпритирует какое именно свойство применять именно сейчас и возможно ли было применить del через свойства а не вызывать внутренний метод?
немного магии: когда будут прописаны принты, раскройте в 3 правом окне любой экземпляр (a, b, w и т.д.) и принт get_balance будет срабатывать при каждом любом действии: определении класса, изменении значения баланса, а при выводе функции get_balance - будет срабатывать два раза. Почему так?!
А Вы можете подсказать, почему если перед атрибутом не поставить нижнее подчеркивание, то вот такой код с проперти как у Вас выдает ошибку? А только проставил нижние подчеркивания и все заработало
У меня PyCharm заставляет в строчке set_balance приравнять value=None, без этого выдает ошибку. Можешь пожалуйста сказать в чем проблема и почему это вылезает. def set_balance(self, value=None): print('set balance') if not isinstance(value, (int, float)): raise ValueError('Баланс должен быть числом') self.__balance = value
@@egoroffchannel хм, сейчас переправил без None и заработало, без понятия. Может что-то не так было написано. Но крч тогда не давало изменить число через d.balance = ... Сейчас все нормально
А зачем все эти ухищрения. Мы написали 3 метода, чтобы делать тоже самое, если бы метод был не приватным. Я не спорю, что так надо делать, но как-то не было приведено практические примеров
Спасибо за объяснение, вновь всё наглядно и понятно) Но всё же у меня есть вопросы... Мне кажется ты выбрал не совсем удачные пример, ибо у меня возник вопрос, а зачем нужна защищённая переменная в данном случаи, если мы делаем метод, который позволяет нам её изменять, а потом добавляем ещё и свойство, которое помогает нам это легко сделать...
Привет. К сожалению у тебя на степике ошибка, не принимает ни одно задание. Возможно занижен лимит по времени работы программы? Посмотри в комментах решение Виктора Лепика. Я думаю оно верно, но все равно не проходит
не особо понятно, зачем было менять первоначальные возможности которые делали тоже самое, на эту надстройку кода если команды и функции остались прежними
Вам показали каким образом можно задать логику доступа к атрибутам. Не только ограничение private, protected. Через property getter, например, вы можете определить выдачу результата по паролю. Всё ограничено только фантазией и техническим заданием
🔥 Записывайся на курс по ООП: stepik.org/a/114354
📙 Там тебя ждет:
✔ более 180 практических заданий по ООП
✔ более 300 тестовых заданий на проверку материала
✔ более 6 часов видеоматериала
✔ текстовые материалы по урокам, примеры кода
✔ Доступ к закрытому чату с дружественной обстановкой
✔ Сертификат в случае успешного прохождения курса
🎁 По промокоду EGOROFF можно получить 10% скидки на приобретение данного курса
я столько видео просмотрел, но никто так доступно и понятно не объяснил, как это сделали Вы! Спасибо от всей души!
лучший курс, что я нашел и стоит каждого рубля, продолжай в том же духе
Привет, Артём! Ты очень досутпно объясняешь, благодарю! Продалжай в том же духе. Я еще надеюсь, что ты подробные видео сделаешь про сокеты, tkinter, pyqt, работу с бд, django и flask.
Спасибо большое. Учусь а курсе сейчас и смотрю Ваши видео перед более сложными, которые на курсе. Очень полезный плейлист и канал
Спасибо, посмотрела!
Спасибо, хорошо объяснили
Благодарю, продолжай в том же духе!
Как всегда все прекрасно!)
Спасибо огромное!
Здравствуйте, что-то я немного запутался. А для чего тогда нужно создавать это свойство геттер и сеттер через property, в чем смысл? Ведь получается мы вернулись к началу, снова сделали наш атрибут, как будто бы публичным. Не легче будет например в таких ситуациях просто убрать "__" и снова сделать ее публичной. Не знаю может из-за маленького опыта не понимаю смысл этих геттеров и сеттеров
Может, я неправильно предполагаю, но смысл например такой: в геттере или сеттере можно отправлять не просто запрос, а передавать параметром токен пользователя, и внутри метода класса проводить проверку токена на валидность. Тогда аутентифицированный пользователь получит доступ к переменной, а левый - нет.
когда ты просто напрямую изменяешь атрибут через дот нотацию то ты можешь написать туда любую чушь по типу текста, когда нужны числа, как и было показано в примере.
чтобы не вводился текст и другая прочая фигня внутри класса пишут метод, который делают проверку на тип устанавливаемых данных. помимо проверки на тип данных можно напихать туда еще много всяких полезных плюшек, а через простую дотнатацию, т.е когда ты пишешь:
d.balance = 10000
о никаких проверках и речи идти не можешь, но когда ты используешь какой-нибудь метод
d.set_balance(10000)
то в этот метод можно напихать всяких проверок, исключений, сообщений, короче много всякого добра.
но писать такие длинные методы некамильфо и вообще не понятиям, поэтому это самое волшебная функция (или декоратор) property объединяет первое со вторым - т.е. ты залезаешь в функцию класса
d.set_balance()
но с помощью дотнотации как ты делал изначально
d.balance = ...
если я все, конечно, правильно понял.
Спасибо огромное
Здравствуйте. На 9.58 мы вызываем del через обращение к внутреннему методу, а до этого обращались к свойствам, но ведь и del прописан в свойствах. Вопрос у меня общий, как программа интерпритирует какое именно свойство применять именно сейчас и возможно ли было применить del через свойства а не вызывать внутренний метод?
Спасибо за урок
спасибо!
Спасибо!!!
Прем стоит своих денег, хе-хе.
немного магии: когда будут прописаны принты, раскройте в 3 правом окне любой экземпляр (a, b, w и т.д.) и принт get_balance будет срабатывать при каждом любом действии: определении класса, изменении значения баланса, а при выводе функции get_balance - будет срабатывать два раза. Почему так?!
тоже два раза get_balance, узнал почему так?
А Вы можете подсказать, почему если перед атрибутом не поставить нижнее подчеркивание, то вот такой код с проперти как у Вас выдает ошибку? А только проставил нижние подчеркивания и все заработало
видео супер. но я бы добавил проверку на True и False
Крвасавчик!
Два раза посмотрел и ничего не понял. Задача была закрыть доступ к балансу. Десять минут объяснений и в результате всё равно доступ к балансу открыт.
Ваши уроки очень помогают, вы не могли бы снять видео где вы бы постарались сделать свою полноценную игру?
все же не понимаю, ради чего тогда защищенные переменные? Если все равно мы делаем костыли, чтобы с ними работать
У меня PyCharm заставляет в строчке set_balance приравнять value=None, без этого выдает ошибку. Можешь пожалуйста сказать в чем проблема и почему это вылезает.
def set_balance(self, value=None):
print('set balance')
if not isinstance(value, (int, float)):
raise ValueError('Баланс должен быть числом')
self.__balance = value
а что в ошибке пишется?
@@egoroffchannel хм, сейчас переправил без None и заработало, без понятия. Может что-то не так было написано. Но крч тогда не давало изменить число через d.balance = ...
Сейчас все нормально
а как четвертый параметр проперти работает? кто подскажет?:)
четвертый это какой?
@@ИгорьВоронов-ъ4м я в idle работаю.там всплывающая подсказка - кроме fget,fset,fdel еще и doc
Здравствуйте, перепечатал код как и в задании, но почему то у меня balance стал публичным. Хотя __ стоит перед ним. Можете подсказать?
__ две штуки надо а не _
А зачем все эти ухищрения. Мы написали 3 метода, чтобы делать тоже самое, если бы метод был не приватным. Я не спорю, что так надо делать, но как-то не было приведено практические примеров
Спасибо за объяснение, вновь всё наглядно и понятно)
Но всё же у меня есть вопросы...
Мне кажется ты выбрал не совсем удачные пример, ибо у меня возник вопрос, а зачем нужна защищённая переменная в данном случаи, если мы делаем метод, который позволяет нам её изменять, а потом добавляем ещё и свойство, которое помогает нам это легко сделать...
в питоне можно изменить любой атрибут, но проверти позволяет тебе контролировать этот процесс
Его можете скинуть ссылку на видио про isinstance
egoroffartem.pythonanywhere.com/course/python/vstroennaya-funkciya-isinstance
@@egoroffchannel спасибо
Привет. К сожалению у тебя на степике ошибка, не принимает ни одно задание. Возможно занижен лимит по времени работы программы? Посмотри в комментах решение Виктора Лепика. Я думаю оно верно, но все равно не проходит
там в тестах была ошибка
+ условия у вас прописаны на сохранение почты не совсем корректые
Это видео ты снял в 2к18. Почему так долго не выходило??
Наш разум не был готов к такому в 2018.
не особо понятно, зачем было менять первоначальные возможности которые делали тоже самое, на эту надстройку кода если команды и функции остались прежними
Вам показали каким образом можно задать логику доступа к атрибутам. Не только ограничение private, protected. Через property getter, например, вы можете определить выдачу результата по паролю. Всё ограничено только фантазией и техническим заданием
после java грустно без статической типизации ))