[Python-es] Hackear objeto list
Oswaldo
listas en soft-com.es
Sab Sep 17 12:19:45 CEST 2011
Hola,
Tengo un objeto 'list' que es creado por una librería externa sobre el
que me gustaría modificar el método 'append'.
He probado lo siguiente:
- Crear mi propio objeto list y sustituirlo en la instancia de la
libreria pero no se deja, produce 'TypeError: readonly attribute'
>>> class modList(list):
... def append(self, value):
... super(CallbackList, self).append(value)
... print "Append:", value
...
>>> libr.lista = modList()
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: readonly attribute
- He intentado modificar el metodo append de la lista pero siempre salta
el error de que el atributo es 'read-only':
>>> def appendHack(self, value):
...
... list.append(self, value)
... print "Append Value:", value
...
>>> l = []
>>> l.append = appendHack
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'list' object attribute 'append' is read-only
>>> l.append = appendHack.__get__(l)
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'list' object attribute 'append' is read-only
¿Conocéis alguna forma de modificar el método append de una lista sin
hacer una derivación?
Gracias,
--
Oswaldo
Más información sobre la lista de distribución Python-es