Fhernd icon

descriptor.py

Fhernd | PRO | 12/20/18 12:22:14 PM UTC | 0 ⭐ | 2455 👁️ | Never ⏰ | []
Python |

920 B

|

None

|

0 👍

/

0 👎

class Entero:
    def __init__(self, nombre):
        self.nombre = nombre
 
    def __get__(self, instancia, clase):
        if instancia is None:
            return self
        else:
            return instancia.__dict__[self.nombre]
 
    def __set__(self, instancia, valor):
        if not isinstance(valor, int):
            raise TypeError('Se requiere un argumento de tipo entero.')
 
        instancia.__dict__[self.nombre] = valor
 
    def __delete__(selfself, instancia):
        del instancia.__dict__[self.nombre]
 
class Punto:
    x = Entero('x')
    y = Entero('y')
 
    def __init__(self, x, y):
        self.x = x
        self.y = y
 
if __name__ == '__main__':
    punto = Punto(2, 5)
 
    print(punto.x, punto.y) # Invocación implicita de Punto.x.__get__(punto, Punto)
 
    punto.x = 3     # Invocación de Punto.x.__set__(punto, 3)
    punto.y = 5.3   # Invocación de Punto.y.__set__(punto, 5.3)

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎