TGViewer
Библиотека собеса по Python | вопросы с собеседований Библиотека собеса по Python | вопросы с собеседований @py_interview_lib · 5.91K subscribers
Post #1340 659
Как работает дескрипторный протокол?

Дескриптор — объект, реализующий __get__, __set__ или __delete__. Если такой объект присвоен атрибуту класса, доступ через экземпляр идёт через эти методы.
Два типа: — Data-дескриптор (__set__/__delete__) — приоритет над __dict__ экземпляра. — Non-data (только __get__) — перекрывается __dict__ экземпляра.
Порядок поиска атрибута: data-дескрипторы класса → __dict__ экземпляра → non-data и обычные атрибуты класса → __getattr__.
На дескрипторах построены property, classmethod, staticmethod, cached_property, привязка методов к экземпляру и поля в dataclasses.

class Positive:
def __set_name__(self, owner, name):
self.name = f'_{name}'
def __get__(self, obj, objtype=None):
return getattr(obj, self.name)
def __set__(self, obj, value):
if value <= 0:
raise ValueError("must be positive")
setattr(obj, self.name, value)

class Account:
balance = Positive()


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

Библиотека собеса по Python
  • 🔥 4
More from @py_interview_lib
  1. Sep 15, 2026Как спроектировать безопасную плагинную систему без «грязных» импортов? Определите стабиль…
  2. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  3. Aug 5, 2026У вас есть Python-сервис, который обрабатывает асинхронные запросы через asyncio. При нагр…
  4. Aug 5, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
  5. Aug 5, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Jul 30, 2026Как спроектировать CLI-утилиту с подкомандами, автокомплитом и хорошей тестируемостью? Пос…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →