为了账号安全,请及时绑定邮箱和手机立即绑定

从子类方法更改或覆盖 str

从子类方法更改或覆盖 str

慕无忌1623718 2021-10-19 16:15:49
我在继承的类中覆盖 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()字符串没有改变。
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

由于诸如 Python 之类的优化语言对字符串执行(即它们是不可变的,因此可以重用相同的字符串),我认为从 str 继承不是一个好习惯,相反,您可以编写一个包装字符串的类:


class Sentence:

    def __init__(self, msg: str):

        self.msg = msg


    def simplify(self):

        self.msg = self.msg.lower().strip()

通过这种方式,您可以改进您的实现,例如,如果您经常更改字符串并且遇到性能问题。


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信