Descriptors
Descriptors customize attribute access using
__get__, __set__, and __delete__.
Example
class Age:
def __get__(self, obj, objtype=None):
return obj._age
def __set__(self, obj, value):
if value < 0:
raise ValueError("Invalid age")
obj._age = value
class Person:
age = Age()
p = Person()
p.age = 30
print(p.age)
✔ Used in ORMs
✔ Used in validation frameworks
✔ Used in validation frameworks