Python 从子类方法更改或重写str

Python 从子类方法更改或重写str,python,python-3.x,string,inheritance,subclass,Python,Python 3.x,String,Inheritance,Subclass,我在继承的类中重写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() se

我在继承的类中重写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()
我想更改该类中包含的字符串,以用于各种用途。有办法吗?因为我从stack尝试了很多东西,但没有人帮助我

@编辑:

这里有一个解释我想做什么: 在init中,我初始化句子类:

self.sentence = Sentence("") 
Mainloop,用户可以在其中更改句子:

self.sentence.input("Your input:")
在此之后,我想简化alghoritm的字符串:

self.sentence.simplify()
就这样,在这之后,我想用self.语句,比如string


但在这两种方法中:

    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()

字符串没有更改。

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

class Sentence:
    def __init__(self, msg: str):
        self.msg = msg

    def simplify(self):
        self.msg = self.msg.lower().strip()

例如,如果您太频繁地更改字符串而遇到性能问题,您可以通过这种方式改进实现。

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

class Sentence:
    def __init__(self, msg: str):
        self.msg = msg

    def simplify(self):
        self.msg = self.msg.lower().strip()

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

更全面地解释您试图做的事情以及您的示例到底做错了什么,可以帮助您解决此问题。在方法中分配给
self
,不会产生任何效果,您所做的只是更改一个局部变量,该变量将在方法返回时消失。对您尝试执行的操作以及您的示例的具体错误进行更全面的解释可能会有助于解决此问题。在方法中指定给
self
,不会产生任何效果,你所做的只是改变一个局部变量,当方法返回时它会消失。好吧,我试着避免这种方式,但是如果这只是一种正确的方式,那么这就是我的答案。谢谢:)好吧,我试着避免这种方式,但如果这只是一种正确的方式,那就是我的答案。谢谢:)