Доступ к свойствам объекта. Property и slots

  Рет қаралды 3,978

Python Russian

Python Russian

Жыл бұрын

Обсудим интересный вопрос -как можно запретить менять наши атрибуты, реализовать логику изменения/получения атрибутов и как запретить добавлять объекту новые атрибуты.
Напоминаю: используем сет/гет, а также проперти ТОЛЬКО при наличии логики в получении или установке атрибута
1) _dict_ - это атрибут объектов в питоне, который хранит состояние
2) _setattr_ вызывается при попытке установить атрибут
3) property - это удобный механизм создания геттеров и сеттеров
4) _slots_ - создан для уменьшения памяти, занимаемой объектами, но как побочное свойство -не даст добавить объекту новый атрибут
Читать:
docs.python.org/3/reference/d...
docs.python.org/3/reference/d...
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm

Пікірлер: 22
@Chel1k7
@Chel1k7 11 ай бұрын
Автор просто гений объяснения материала, спасибо
@topevgn5914
@topevgn5914 Жыл бұрын
Спасибо за подробность и доступность подачи материала. Палец вверх и колокольчик.
@dmitrymorozov3038
@dmitrymorozov3038 3 ай бұрын
Вместо записи в __dict__, можно вызвать super().__setattr__(key, value)
@n_sta5850
@n_sta5850 2 ай бұрын
Спасибо за видео!
@cOnT3ST
@cOnT3ST Жыл бұрын
Большое спасибо за видос. Очень доступно
@swaytornado8327
@swaytornado8327 Жыл бұрын
привет. а запиши видео, как ты пришел в программирование, что интересного приходилось делать, и как ты с Java перешел на Python, и зачем. У тебя хороший технический бэкграунд, и на фоне других авторов, очень качественные примеры написания и применения кода. Я уверен, что всем будет интересно послушать. А с одной задачей я разобрался, метод (__add__) добавил, а вторую с хэшем, еще не решил. Спасибо за видео. Прям все самое лучшее, The Best.
@PythonRussian
@PythonRussian Жыл бұрын
добавил в список на будущее
@MrPalianytsia
@MrPalianytsia Жыл бұрын
Ну тогда и я поругаюсь, зачем 60fps? Можете изменить палитру подсветки синтаксиса? Фиолетовомалиновый на этом фоне плохо читается. Спасибо.
@altf4_so
@altf4_so Жыл бұрын
Пасибки, звук стал очень хорошим
@pafos9447
@pafos9447 10 ай бұрын
кайф
@olegsedov9474
@olegsedov9474 Жыл бұрын
при использовании __slots__ атрибут объект все еще может получить, если присвоить аттрибут классу: class First: __slots__ = () def __init__(self, value): self.value = value if __name__ == '__main__': first = first(42) Dealer.att = 23 print(dealer.att) выводит 23. Я понимаю, что через объект мы обращаемся к атрибуту класса, и объект атрибут не приобретает, но хотелось бы понять тогда как ограничить создание атрибутов класса
@mixalaus
@mixalaus Жыл бұрын
Спасибо за классное объяснение. Многое про @property стало понятнее. А как меняется быстродействие при использовании __slots__?
@PythonRussian
@PythonRussian Жыл бұрын
быстродействие кардинально не изменится, таплы конечно оптимизированы, но не думаю что прирост будет существенным по скорости. Целиться стоит в экономию памяти, вот она может быть кардинальной.
@SoloveY1990
@SoloveY1990 Жыл бұрын
Большое спасибо! Подскажите, пожалуйста, как после создания __slots__ хранятся значения атрибутов, если больше нет __dict__??
@gsm7490
@gsm7490 2 ай бұрын
А можно сделать Cat.__slots__ += (“say_meaow”,) ?
@725etw7w
@725etw7w Жыл бұрын
Здравствуйте, есть ли какие-то кейсы где надо использовать сеттеры с геттерами, а где через проперти фигачить? Просто например есть класс юзер который на открытии приложения инициализируется, потом его имя, фам... и т.д. где-то используются, а потом еще и добавлять auth_token, как неизменяемую переменную. Вот вопрос заключается в том: что правильней пользовать сеттер и там прописывать миллион if что бы отсеять всевозможные неправильные value, или через проперти для каждого поля расписать?
@PythonRussian
@PythonRussian Жыл бұрын
золотого правила нет, вопрос в читаемости, насколько вам и другому программисту будет понятно что тут написано. Проперти вполне подходят из-за простоты использования, а кто из других языков приходит -любят сеттеры
@725etw7w
@725etw7w Жыл бұрын
​@@PythonRussianизвините, не досмотрел до конца видео, все понял, спасибо!
@x-user-agent
@x-user-agent Жыл бұрын
как всегда - супер 👍 спасибо по поводу мелко - всегда думал, а чего постоянно просят сделать крупнее, нормально же видно) пока не начал смотреть буржуйские ролики, что называется почувствуйте разницу kzfaq.info/get/bejne/erOAYKqUqtKpeaM.html
@MrPalianytsia
@MrPalianytsia Жыл бұрын
Иногда просто удобно посмотреть на телефоне, а диагональ не лопата.
@Nicktimes
@Nicktimes 6 ай бұрын
Мне всегда интересно,от кого эта защита блять?если в своем коде лазию исключительно я,может в группе разрабов
@PythonRussian
@PythonRussian 6 ай бұрын
если код только для тебя, то конечно пиши как угодно =) если есть шанс что увидит еще кто-то, то стоит подумать о читаемости и организации
ООП: Инкапсуляция в python
51:12
Python Russian
Рет қаралды 13 М.
Список и кортеж
37:46
Python Russian
Рет қаралды 4,4 М.
Clowns abuse children#Short #Officer Rabbit #angel
00:51
兔子警官
Рет қаралды 76 МЛН
Playing hide and seek with my dog 🐶
00:25
Zach King
Рет қаралды 33 МЛН
Smart Sigma Kid #funny #sigma #comedy
00:26
CRAZY GREAPA
Рет қаралды 18 МЛН
Атрибуты класса, classmethod и staticmethod
44:40
Python Russian
Рет қаралды 5 М.
Первые шаги в ООП: класс, объект, self
1:00:45
Python Russian
Рет қаралды 32 М.
Конкурентность и параллельность
40:31
Python Russian
Рет қаралды 6 М.
Главная тайна IT, язык Smalltalk
18:50
Python Russian
Рет қаралды 3,5 М.
Python OOP getters setters, decorator property, classmethod, staticmethod
22:40
Паттерн Singleton (Одиночка) в Python
36:55
Python Russian
Рет қаралды 11 М.
Clowns abuse children#Short #Officer Rabbit #angel
00:51
兔子警官
Рет қаралды 76 МЛН