PythonAdvanced
Python Descriptors: The Protocol Behind Properties and Methods
@property, bound methods, cached_property and __slots__ all run on one small protocol. Learn how descriptors work, the exact attribute lookup order, and how to write your own.