更改字符串实例的内容

时间:2018-05-02 06:40:56

标签: python string pointers

有没有办法在python中更改str实例的内容

我不想创建一个新字符串,因为我需要将字符串实例作为参数传递给另一个将与之一起操作的类。然后我需要更改字符串的内容。

我无法创建类的新方法,因此它会重新分配字符串,因为它是Widget类模块tkinter

我需要这个来改变小部件的颜色。我知道有config方法可以为我做这些方法,但是当我有大约一百个小工具然后我需要改变所有这些小部件的颜色时,每种颜色都是不同的。非常不优雅,不方便为每个小部件编写配置行,并且很难维护。

我认为在这种情况下使用指针会很棒,但不幸的是python中没有指针。我甚至考虑创建某种类return内容self.string而不是<__main__.Spam object at 0x02F20390>等实例标识符。

class String:
...     def __someprivatemethod__(self):
...             return "That returns string on call"
...
>>> spam = String()
>>> spam
<__main__.String object at 0x02F203F0>
>>> # now it should return the "That returns string on call

我不想使用__call__方法,因为最后有方括号()。在这个例子中,我只想返回"That returns string on call"字符串。这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

不,您无法在创建字符串对象后对其进行更改。字符串 不可变

但是,如果我理解你的话,你可以用

完成你想要的
class StringClass:
    def __someprivatemethod__(self):
        return "That returns string on call"
    def __repr__(self):
        return self.__someprivatemethod__()
    def __str__(self):
        return repr(self)
    def __add__(self, s):
        return '{}{}'.format(repr(self), s)

>>> a = StringClass()
>>> a
That returns string on call
>>> a + 'Strings'
>>>
That returns string on callStrings