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
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a