[pyar] Decoradores de clase

Hernan Grecco hernan.grecco en gmail.com
Dom Mar 4 19:57:43 ART 2012


Yo haria algo asi:

def deco(aclass):
    def augmented_method(self):
        print('test')

    aclass.augmented_method = augmented_method
    return aclass

@deco
class SimpleClass(object) :
    def __init__(self) :
        self.attr1 = "attr1"
        self.attr2 = "attr2"

    def print_all(self) :
        print self.attr1, self.attr2

if __name__ == "__main__" :
    sc = SimpleClass()
    print(type(sc.augmented_method))
    sc.print_all()
    sc.augmented_method()


On Sun, Mar 4, 2012 at 11:51 PM, Lucas Liendo <mindmaster en gmail.com> wrote:
> Buenas a todos ! Queria consultar si es posible hacer algo asi :
>
> @a_class_decorator
> class ExampleClass(object) :
> ...
>
> Donde "a_class_decorator" es un decorador de clase, que lo que deberia hacer
> es agregar atributos a la clase decorada. Intente algo como lo siguiente,
> pero no funciona :
>
> class SimpleClassDecorator(object) :
>     def __init__(self, c) :
>         self._c = c
>
>     def __call__(self) :
>         DecoratedClass = type("DecoratedClass", (self._c.__name__, ),
> {"augmented_method" : self.augmented_method})
>         return AugmentedClass
>
>     def augmented_method(self) :
>         print "test"
>
> @SimpleClassDecorator
> class SimpleClass(object) :
>     def __init__(self) :
>         self.attr1 = "attr1"
>         self.attr2 = "attr2"
>
>     def print_all(self) :
>         print self.attr1, self.attr2
>
> if __name__ == "__main__" :
>     sc = SimpleClass()
>     sc.print_all()
>     sc.augmented_method()
>
> El siguiente error es devuelto :
>
> TypeError: metaclass conflict: the metaclass of a derived class must be a
> (non-strict) subclass of the metaclasses of all its bases.
>
> Estuve leyendo un poco de metaclases pero veo que no logro aplicar bien lo
> que pude entender del tema :P. Muchas gracias !
>
>
> --
>
> Saludos,
> Lucas.
>    _
> __("<
> \__/
>  ^^
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



More information about the pyar mailing list