【发布时间】:2010-12-23 15:52:52
【问题描述】:
我有以下字符串子类:
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 docs),但我认为我的实现中缺少一些关键部分。
【问题讨论】:
-
文档告诉你 wrap 字符串类而不是子类!也就是说,要执行您想要的操作,您应该创建一个继承自
object的类,其属性包含字符串的当前值。 -
[用手拍额头] 噢!谢谢你。谢谢你。请将您的上述评论作为答案(或将其添加到您现有的评论中),以便我接受。我想我错过了一些明显的东西。
标签: python subclassing