2011-01-10 10 views
19

¿Por qué la clase MutableString quedó obsoleta en Python 2.6;
y por qué fue eliminado en Python 3?¿Por qué MutableString está en desuso en Python?

+0

"La intención principal de esta clase es servir como un ejemplo educativo para la herencia ..." –

+0

Protegido desde que acabo de vincular a esto en Meta en lo que respecta a otra discusión. Preservarlo como se le pidió originalmente. –

Respuesta

26

La clase MutableString estaba destinada a ser educativa, y no para ser utilizada en programas reales. Si nos fijamos en la implementación, verá que realmente no puede usar esto en una aplicación seria que requiera cadenas mutables.

Si necesita cadenas de bytes mutables, puede considerar usar bytearray que está disponible en Python 2.6 y 3.x. La implementación no crea nuevas cadenas cada vez que modificas la anterior, por lo que es mucho más rápida y utilizable. También es compatible con el protocolo de búfer de manera adecuada, por lo que se puede utilizar en lugar de una cadena de bytes normal prácticamente en todas partes.

Si usted no está realmente va a hacer muchas modificaciones de una sola cadena mediante un índice, la modificación de una cadena normal, mediante la creación de uno nuevo en caso de que sea adecuado (por ejemplo a través str.replace, str.format y re.sub).

No hay cadenas Unicode mutables, puesto que se considera una aplicación poco común, pero siempre se puede poner en práctica __unicode__ (o __str__ para Python 3) y encode métodos en su encargo tipo de secuencia para emular una.

5

Supongo que se supone que las cadenas no se pueden modificar. El propósito principal era "educativo", después de todo. Si necesita mutar cadenas, use una lista de cadenas o StringIO.

Cuestiones relacionadas