RE: [Python-es] Sobrecargar función

Hernán Martínez Foffani hernan en orgmf.com.ar
Mie Feb 9 17:51:57 CET 2005


> No se por que a mi no me funciona. Me da el siguiente error:
> ...

Pues no se por qué...
¿Has usado ListDict como constructor, no? (en
mi email usé ldict porque ese el nombre que le puse
a la clase)
¿Tampoco habrás definido un método __copy__()?

>>> class ListDict(dict):
	def __init__(self, *args):
		self._orden=[]
		dict.__init__(self, *args)
	def copy(self):
		c=ListDict(self)
		c._orden = self._orden[:]
		return c
	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)


>>> l =ListDict()
>>> l["a"]=1
>>> l
{'a': 1}
>>> type(l)
<class '__main__.ListDict'>
>>> ll = l.copy()
>>> type(ll)
<class '__main__.ListDict'>
>>> ll == l
True
>>> ll is l
False
>>> l._orden
['a']
>>> ll._orden
['a']
>>>

-H.




Más información sobre la lista de distribución Python-es