Los descriptores son como las
"propiedades" en C# de .NET, agrupan los getters y setters que acceden a los
atributos de una clase.
__set__() y
__get__() son muy parecidos a los
metodos magicos de PHP: __set() y __ge() ... se llaman cuando se intenta hacer un acceso a un atributo.
Ejemplo sacado del manual:
Cita: class RevealAccess(object):
"""A data descriptor that sets and returns values
normally and prints a message logging their access.
"""
def __init__(self, initval=None, name='var'):
self.val = initval
self.name = name
def __get__(self, obj, objtype):
print('Retrieving', self.name)
return self.val
def __set__(self, obj, val):
print('Updating', self.name)
self.val = val
>>> class MyClass(object):
x = RevealAccess(10, 'var "x"')
y = 5
>>> m = MyClass()
>>> m.x
Retrieving var "x"
10
>>> m.x = 20
Updating var "x"
>>> m.x
Retrieving var "x"
20
>>> m.y
5
__delete__() tambien forma parte de una propiedad pero no encontre nada de informacion ***
https://docs.python.org/3.5/referenc...ect.__delete__