[pyar] Decoradores de clase

Lucas Liendo mindmaster en gmail.com
Dom Mar 4 19:51:04 ART 2012


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.
   _
__("<
\__/
 ^^
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120304/a7217306/attachment.html>


More information about the pyar mailing list