У меня есть следующий подкласс строк:
Код: Выделить всё
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