Estructura para una tabla?
Miquel Llover
miquel en llover.org
Mie Jun 5 19:46:07 CEST 2002
Hola de nuevo!
Parece que ya me funciona, pues tenía un error en el nombre del diccionario.
Si en vez de ordenar una lista de pedidos, lo que quisiera es que me
devolviera una lista de pedidos ordenada pero sin alterar la original, como
lo debería hacer? He intentado lo siguiente:
def ordena_pieza(self):
comp_pieza = pedido.compara("pieza")
l_aux = self.l
return l_aux.sort(comp_pieza)
Pero continua modificandome la lista de pedidos original. Como debería
hacer la copia?
Seria correcto crear un método para copiar una lista sobre otra (algo asi
como: copia_lista_pedidos(self.l, l_aux)) y después ordenar la copia?
Existe algun mètodo de copia que se pueda alterar segun mis necesidades?
(tipo "sort")
Podria definir mi propia asignación de una lista en otra? (tipo: l_aux =
self.l).
Cuando asignas, lo que haces es crear una especie de puntero sobre los
mismos datos, o se crea una copia?
Gracias por atender mis dudas.
Si puedo ayudar en la traducción de algun documento y está en mis manos...
Miquel
At 22:23 02/06/02, you wrote:
>El Sáb 01 Jun 2002 13:50, Miquel Llover escribió:
>
> > Buenas! Me lo he estado mirando y me han asaltado algunas dudas...
> >
> > At 12:10 29/05/02, you wrote:
> > >Hay que trabajar un poco más para hacer que se pueda cambiar la columna
> > >por la que se ordena. Como sugerencia, se puede partir desde aquí:
> > >
> > >class Pedido:
> > > def __init__(self,nc,pieza,cant,fecha):
> > > self.pedido={
> > > "nc":nc, "pieza":pieza, "cant":cant, "fecha":fecha
> > > }
> > >
> > > def compara(column):
> > > return lambda a,b,column=column:
> > > cmp(a.pedido[column],b.pedido[column])
> >
> > Aqui me da un error: "AttributeError: pedido". De dónde salen a y b? No
> > deberian estar como parámetros de la función compara? He mirado el formato
> > de las lambda-expresiones en "Dive Into Python", y las funciones del tipo
> > "g = lambda x: x*2" las entiendo, pero no lo identifico con el formato de
> > esta lambda-expresion.
>
>Una función lambda se define de igual manera que una función normal, sólo se
>diferencia en que no tiene nombre y que consiste en una única expresión. El
>método anterior lo podría haber definido así:
>
> def compara(column):
> def compFunc(a,b,column=column):
> return cmp(a.pedido[column],b.pedido[column])
> return compFunc
>
>Este método 'compara' "construye" una función de argumentos 'a' y 'b' (e
>implícitamente 'column'). Esta función se pasa como argumento a la función
>"sort" de la lista de pedidos para hacer la ordenación. Es aquí, en el sort,
>donde a 'a' y 'b' se le da los valores de los dos elementos de la lista que
>queremos comparar.
>
>No tengo ni idea de porqué te da error. Te envío el código completo, del que
>te puedo asegurar que funciona bien en python 2.2
>
> > > compara=staticmethod(compara)
> >
> > Qué significa "método estático"?
>
>En programación orientada a objetos (POO) es un método cuyo enlace se
>resuelve
>en tiempo de compilación ("early binding"), en contraposición a los métodos
>dinámicos ("late binding") que se resuelven durante la ejecución.
>
>Esta definición no tiene mucho sentido en python. Para entendernos mejor
>podemos decir que un método estático es "un método cuya definición no depende
>directamente ni de la clase ni de los objetos que ésta instancie". Podría
>haber ido tranquilamente fuera de la clase como una función más.
Más información sobre la lista de distribución Python-es