gracias :) El día 22 de agosto de 2013 00:48, Olemis Lang <ole...@gmail.com> escribió: > On 8/21/13, Juan BC <jbc.deve...@gmail.com> wrote: >> Estoy haciendo un pequeño script que recibe otro script por parametro >> (osea un plugin) y lo que necesito es ordenar las clases dentro de el >> plugin en el orden que fueron declaradas: >> >> en un ejemplo trivial seria algo asi: >> >> # plugin.py >> >> class B(object): pass >> class A(object): pass >> >> # manager.py >> >> import plugin >> >> classes = [k, v for k,v in vars(plugin).items()] >> classes.sort(<CODIGO PARA ORDENAR B antes que A>) >> > > Ejemplos rápidos con Python 2.x > > Sugerencia #1 : Solución genérica > > {{{#!py > >>>> class TimestampedType(type): > ... def __init__(self, *args, **kwargs): > ... super(TimestampedType, self).__init__(*args, **kwargs) > ... self.__timestamp__ = datetime.now() > ... >>>> from datetime import datetime >>>> class A: > ... __metaclass__ = TimestampedType > ... >>>> class B: > ... __metaclass__ = TimestampedType > ... >>>> class C: > ... __metaclass__ = TimestampedType > ... >>>> classes = [B, A, C] >>>> sorted(classes, key=lambda cls: cls.__timestamp__) > [<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>] > }}} > > Sugerencia #2 : Meta-cache (similar a ComponentMeta.cache de Trac + > Bloodhound) > > {{{#!py > >>>> class PluginMeta(type): > ... __cache__ = [] > ... def __init__(self, *args, **kwargs): > ... super(PluginMeta, self).__init__(*args, **kwargs) > ... self.__cache__.append(self) > ... >>>> class A: > ... __metaclass__ = PluginMeta > ... >>>> class B: > ... __metaclass__ = PluginMeta > ... >>>> class C: > ... __metaclass__ = PluginMeta > ... >>>> PluginMeta.__cache__ > [<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>] > }}} > > En ambos casos se puede prescindir de la meta-clase explícita > utilizando herencia > > -- > Regards, > > Olemis - @olemislc > > Apache™ Bloodhound contributor > http://issues.apache.org/bloodhound > http://blood-hound.net > > Blog ES: http://simelo-es.blogspot.com/ > Blog EN: http://simelo-en.blogspot.com/ > > Featured article: > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/
-- Juan B Cabral _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/