[pyar] Ejecutar un método al finalizar la instanciación

Juan BC jbc.develop en gmail.com
Dom Jul 11 22:08:14 ART 2010


El 11/07/10 22:02, Pablo Ziliani escribió:
> Juan BC wrote:
>> El 11/07/10 21:05, Roberto Alsina escribió:
>>> On Sunday 11 July 2010 20:51:56 Juan BC wrote:
>>>> El tema es que el metodo init tengo que redefinirlo y bastante... no en
>>>> una jerarquia sino tengo muchas clases derivadas. y quiero que sin
>>>> necesidad de llamar a "metodo" en en el __init__ aun asi se ejecute. Es
>>>> un codigo de comprobacion el que tengo que lanzar.
>>>
>>> Metaclases, creo.
>>
>> Ya mi __metaclass__ esta definida como un ABCMeta... la verdad que toy
>> medio perdido con esto
>
> A ver si queda un poco más claro, vos no querés tocar:
> - la clase A
> - la (meta) clase ABCMeta
> - el __init__ de las clases derivadas (B())
>
> ¿no podés/querés componer la metaclase?
>
> Otra opción es decorando la clase (chancha para mi gusto, con pitfalls
> que ni me imagino, no probé qué pasa cuando tenés una metaclase en el
> medio):
>
>  >>> def llama_a_metodo(cls):
> ... __init__original = cls.__init__
> ...
> ... def deco_init(self, *args, **kwargs):
> ... cls.metodo(self)
> ... __init__original(self, *args, **kwargs)
> ...
> ... cls.__init__ = deco_init
> ... return cls
> ...
>  >>> class A(object):
> ... def metodo(self):
> ... print "WAWAWA"
> ...
>  >>> @llama_a_metodo
> ... class B(A):
> ... pass
> ...
>  >>> B()
> WAWAWA
> <__main__.B object at 0x984ab4c>
>
> En cualquier caso, creo que vas a tener que mandar un poco de código
> real, si no es demasiado para adivinar...
> _______________________________________________
> 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/

me gusto la decoracion... gracias



More information about the pyar mailing list