我在继承的类中重写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()
我想更改该类中包含的地雷字符串,以用于各种用途。有办法吗?因为我从堆栈中尝试了很多东西,没有人帮助我。
@编辑:
有一个解释我想做什么: 在初始化中,我初始化Sentence类:
self.sentence = Sentence("")
Mainloop,用户可以在其中更改句子:
self.sentence.input("Your input:")
之后,我想简化alghoritm的字符串:
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()
字符串未更改。
答案 0 :(得分:3)
由于诸如Python之类的优化语言对字符串执行(即它们是不可变的,因此可以重复使用相同的字符串),我认为从str继承不是一个好习惯,相反,您可以编写一个包装字符串:
class Sentence:
def __init__(self, msg: str):
self.msg = msg
def simplify(self):
self.msg = self.msg.lower().strip()
例如,如果您过于频繁地更改字符串而遇到性能问题,则可以通过这种方式来改进实现。