从子类方法更改或覆盖 str

我在继承的类中覆盖 str 时遇到了问题。有没有办法做类似的事情?


class Sentence(str):


    def input(self, msg):

        """Extend allow to hold one changing object for various strings."""

        self = Sentence(input(msg))


    def simplify(self):

        self = self.lower()

        self.strip()

我想更改包含在该类中的字符串,以用于各种用途。有没有办法做到这一点?因为我从堆栈中尝试了很多东西,但没有人帮助我。


@编辑:


有一个解释我想做什么: 在 init 中,我初始化 Sentence 类:


self.sentence = Sentence("") 

Mainloop,用户可以在其中更改 Sentence:


self.sentence.input("Your input:")

之后我想简化算法的字符串:


self.sentence.simplify()

这就是全部,之后我想使用 self.sentence 之类的字符串。


但在这两种方法中:


    def input(self, msg):

        """Extend allow to hold one changing object for various strings."""

        self = Sentence(input(msg))


    def simplify(self):

        self = self.lower()

        self.strip()

字符串没有改变。


慕无忌1623718
浏览 156回答 1
1回答

炎炎设计

由于诸如 Python 之类的优化语言对字符串执行(即它们是不可变的,因此可以重用相同的字符串),我认为从 str 继承不是一个好习惯,相反,您可以编写一个包装字符串的类:class Sentence:    def __init__(self, msg: str):        self.msg = msg    def simplify(self):        self.msg = self.msg.lower().strip()通过这种方式,您可以改进您的实现,例如,如果您经常更改字符串并且遇到性能问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python