[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