[pyar] Como puedo no repetir código?

Natalia Bidart nataliabidart en gmail.com
Mar Mayo 24 10:42:15 ART 2011


2011/5/24 Martin Volpe <martin.volpe en gmail.com>:
> Hola lista,
>
> Estoy desarrollando un programa y tengo datos que casi siempre vienen de a
> tres, es decir, los guardo de a tres, los gráfico de a tres, los envio de a
> tres, siempre juntos.
> hasta ahora algo:
>
> #[...]
>         self.graph_ph = Graph()
>         self.graph_o2 = Graph()
>         self.graph_temp = Graph()
>
>         self.contenedor.add(self.graph_ph.canvas)
>         self.contenedor.add(self.graph_o2.canvas)
>         self.contenedor.add(self.graph_temp.canvas)
> #[...]

GRAPH_NAMES = ('ph', 'o2', 'temp')
for name in GRAPH_NAMES:
    obj = Graph()
    setattr(self, 'graph_%s' % name, obj)
    self.container.add(obj.canvas)

> Alguien tiene alguna idea de como automatizar esto?
>
> en otra parte del código lo resolví así:
>
> #[...]
>     def actualizar_gui(self, gui):
>         for i in self:
>             execute = "gui.%s_label.set_text('%s')" % (i, self[i])
>             eval(execute)
> #[...]

No uses eval!!!

Usá metaprogramación, así:

def update_gui(self, gui):
    for name in GRAPH_NAMES:
        getattr(gui, '%s_label' % name).set_text('whatever')

Se entiende?



More information about the pyar mailing list