Last Updated: May 22, 2026
A descriptor is any object that controls what happens when its attribute is accessed on another object. If you've ever wondered how @property works, how methods get bound to instances, or how libraries like Django, SQLAlchemy, and Pydantic validate fields automatically, the answer is descriptors. This lesson covers the protocol, the attribute lookup order, the data vs non-data distinction, and how to build a reusable validating field for a Product class.