Olvidé unas precisiones ... On 8/23/13, Chema Cortes <pych...@gmail.com> wrote: > El día 22 de agosto de 2013 02:59, Juan BC <jbc.deve...@gmail.com> > escribió: >> 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>) > > No es buena idea ésto que quieres hacer.
Sí es buena idea . Se hace en Trac + Bloodhound desde hace mucho tiempo por varias razones . > Por ejemplo, ¿dónde dirías > que se "declaran" las clases si hago ésto?: > > from plugin import * > Considerando q la petición original estaba relacionada con el órden de instanciación d las clases , no veo la problemática de este ejemplo . El import no influye en lo absoluto en la declaración de las clases , si es q se hace en el módulo plugin (q asumo q sea el caso). Si se trata del # de la línea d código ... otros $20 USD ;) > ¿Y si me da por hacer cosas como estas? > > class A: pass > > B = A > > class A: pass > No pasa absolutamente nada . Ud acaba de declarar dos clases , una después de la otra , las dos con el nombre A . B es simplemente el nombre d una variable q se registra en el namespace local . > Hay dos clases, pero en verdad he redeclarado 'A'. > No (ver más abajo) ... desde el punto d vista del modelo de plugins hay dos clases completamente diferentes con el mismo nombre ; lo cual puede traer implicaciones e.g. en Trac + Bloodhound la segunda clase nunca será configurable mediante ExtensionOption (si las dos clases están habilitadas en trac.ini ;) . Ahora este comentario no es 100% preciso pq la metaclase podría garantizar la únicidad del nombre de los plugins (clases) y remplazar la primera instancia d A en el cache con la segunda ... pero eso ya son circunstancias más sofisticadas . Anteriormente estaba hablando a temperatura y presión estándar ;) [...] -- 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/