Изменить строку подкласса на местеPython

Программы на Python
Anonymous
Изменить строку подкласса на месте

Сообщение Anonymous »

У меня есть следующий подкласс строк:

Код: Выделить всё

class S(str):
def conc(self, next_val, delimiter = ' '):
"""Concatenate values to an existing string"""
if not next_val is None:
self = self + delimiter + next_val
return self
Я ожидаю, что это будет работать следующим образом:

Код: Выделить всё

>>> x = S("My")
>>> x.conc("name")
'My name'
>>> x
'My name'
Вместо этого я получаю следующее:

Код: Выделить всё

>>> x = S("My")
>>> x.conc("name")
'My name'
>>> x
'My'
Есть ли способ изменить строку на месте? Я думаю, в этом заключается разница между изменяемыми и неизменяемыми строками. Создание подклассов кажется правильным способом рассматривать строки как изменяемые объекты (по крайней мере, согласно документации Python), но я думаю, что мне не хватает некоторых ключевых моментов в моей реализации.

Подробнее здесь: https://stackoverflow.com/questions/452 ... g-in-place

Вернуться в «Python»