ich die folgende Zeichenfolge Unterklasse haben:Ändern subclassed Zeichenfolge anstelle
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
Ich erwarte, dass dies wie folgt arbeiten:
>>> x = S("My")
>>> x.conc("name")
'My name'
>>> x
'My name'
Stattdessen bekomme ich dies:
>>> x = S("My")
>>> x.conc("name")
'My name'
>>> x
'My'
Gibt es eine Möglichkeit, die Zeichenfolge an Ort und Stelle zu ändern? Ich denke, dass dies in den Unterschied zwischen veränderlichen und unveränderlichen Strings kommt. Subclassing scheint der richtige Weg zu sein, Strings als veränderbare Objekte zu behandeln (zumindest nach der python docs), aber ich denke, dass mir ein Schlüsselelement in meiner Implementierung fehlt.
Die Dokumente sagen Ihnen, _wrap_ die String-Klasse nicht Unterklasse es! Das heißt, um das zu tun, was Sie wollten, sollten Sie eine Klasse von "object" ableiten, wobei ein Attribut den aktuellen Wert der Zeichenfolge enthält. – katrielalex
[Schlägt die Stirn mit der Hand] D'oh! Vielen Dank. Vielen Dank. Bitte machen Sie Ihren obigen Kommentar zu einer Antwort (oder fügen Sie sie zu Ihrer bestehenden hinzu), damit ich sie akzeptieren kann. Ich dachte, ich hätte etwas Offensichtliches vermisst. – mwolfe02