Re: [Python-es] Sobrecargar función
Catalin Lungu
lcatalin en siadv.com
Jue Feb 10 16:47:59 CET 2005
Muchas gracias H.,
Ahora lo tengo mas claro y funciona. Lo que no entiendo es lo de assert.
Para que lo usas? He mirado la ayuda de Python pero no lo he entendido.
----- Original Message -----
From: "Hernán Martínez Foffani" <hernan en orgmf.com.ar>
To: "La lista de python en castellano" <python-es en aditel.org>
Sent: Thursday, February 10, 2005 10:59 AM
Subject: RE: [Python-es] Sobrecargar función
> Al final del mensaje te incluyo la clase completa.
> No debería ser necesario agregar el método __deepcopy__,
> y en todo caso el que expongo es ineficiente, pero
> debido al bug http://www.python.org/sf/1099746 puede
> ser necesario. Hay un patch en http://www.python.org/sf/1100562
>
> -H.
> --- lc.py ---
> import copy
>
> class ListDict(dict):
> def __init__(self, *args):
> self._orden = []
> dict.__init__(self, *args)
>
> def __setitem__(self, n, v):
> if not n in self._orden:
> self._orden.append(n)
> dict.__setitem__(self, n, v)
>
> def __delitem__(self, k):
> dict.__delitem__(self, k)
> self._orden.remove(k)
>
> def keys(self):
> return self._orden
>
> def values(self):
> res = []
> for item in self._orden:
> if self.has_key(item):
> res.append(self[item])
> return res
>
> def index(self, n):
> try:
> pos = self._orden.index(n)
> except:
> pos = -1
> return pos
>
> def count(self):
> return len(self._orden)
>
> def copy(self):
> c = ListDict(self)
> c._orden = self._orden[:]
> return c
>
> def __copy__(self):
> return self.copy()
>
> def __deepcopy__(self, *args):
> c=ListDict(copy.deepcopy(dict(self), *args))
> c._orden=self._orden[:]
> return c
>
> def test():
> ld = ListDict()
> ld["a"] = 1
> ld2 = ld.copy()
> assert ld2 == ld
> assert not ld2 is ld
> ld3 = copy.deepcopy(ld)
> assert ld3 == ld
> assert not ld3 is ld
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es