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