2011-01-10 2 views
19

Почему класс MutableString устарел в Python 2.6;
и почему он был удален в Python 3?Почему MutableString устарела в Python?

+0

«Основное предназначение этого класса - служить учебным примером для наследования ...» –

+0

Защищено, так как я только что связался с этим на мета в отношении другой дискуссии. Сохраняя его, как первоначально спрашивали. –

ответ

26

Класс MutableString должен был быть учебным и не использоваться в реальных программах. Если вы посмотрите на реализацию, вы увидите, что вы не можете использовать ее в серьезном приложении, требующем изменчивых строк.

Если вам нужны измененные байты, вы можете использовать bytearray, который доступен в Python 2.6 и 3.x. Реализация не создает новые строки каждый раз, когда вы меняете старый, поэтому он намного быстрее и удобнее. Он также поддерживает буферный протокол должным образом, чтобы его можно было использовать вместо нормального байта практически везде.

Если вы на самом деле не собираетесь делать много модификаций одной строки по индексу, изменяя обычную строку, создавая новый должен удовлетворить вас (например, через str.replace, str.format и re.sub).

Там нет изменяемого Юникода строки, так как это считается редкостью приложения, но вы всегда можете реализовать __unicode__ (или __str__ для Python 3) и encode методов на пользовательский типе последовательности, чтобы эмулировать один.

5

Я предполагаю, что строки не должны изменяться. В конце концов, основная цель была «образовательная». Если вам нужно мутировать строки, используйте список строк или StringIO.