[pyar] Decoradores de clase

Lucas Liendo mindmaster en gmail.com
Dom Mar 4 20:18:22 ART 2012


Funciona muy bien, por lo que acabas de responder no necesitaria en
absoluto meterme con metaclases, yo pensaba que este era un caso en el que
debia hacer uso de metaclases.

On Sun, Mar 4, 2012 at 7:57 PM, Hernan Grecco <hernan.grecco en gmail.com>wrote:

> 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
> _______________________________________________
> 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
>



-- 

Saludos,
Lucas.
   _
__("<
\__/
 ^^
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120304/c1dad7e9/attachment.html>


More information about the pyar mailing list