Cargando

  • 2 Min To Read
  • 01 Jan, 0001
    Índice de contenido

    Lo que produce el siguiente resultado: en lugar de un mensaje de error getattr: método_ficticio estudiante.dummy_method(): predeterminado 28.6 Búsqueda de atributos de intercepción También es posible interceptar siempre las búsquedas de atributos usando la nación de puntos (por ejemplo, estudiante.nombre) implementando el método getattribute(). Este siempre se llamará al método en lugar de buscar el atributo en los objetos diccionario. El getattr() método voluntad solo ser llamado si un Se genera AttributeError o el método getattribute() explícitamente llama al método getattr(). Por lo tanto, el método getattribute() debería devolver un valor de atributo (que puede ser un valor predeterminado) o generar un AttributeError si corresponde. Es importante evitar implementar código que recursivamente se llamará a sí mismo (por ejemplo, llamar a self.name dentro de getattribute() resultará en un llamada recursiva a getattribute()!). Para evitar esto, la implementación ción del método debe acceder al directorio dict o llamar a la base Clases método getattribute(). A continuación se proporciona un ejemplo de un método getattribute() simple que registra la llamada a un método y luego pasa la invocación a la clase base implementación: estudiante de clase: cuenta = 0 def init(uno mismo, nombre): self.nombre = nombre Student.count += 1

    Método llamado si el atributo es desconocido

    def getattr(uno mismo, atributo): imprimir (’getattr:’, atributo) devolver ‘predeterminado’

    Siempre se llamará al método cuando un atributo

    se accede, solo se llamará a getattr si

    lo hace explícitamente o si se genera un AttributeError

    def getattribute(yo, nombre): imprimir(’obteneratributo()’, nombre) devolver objeto.obteneratributo(yo, nombre) def my_default(auto): devolver ‘predeterminado’ 28.5 Manejo de invocaciones de métodos desconocidos 333

    comments powered by Disqus