从子类方法更改或覆盖 str
Change or override str from subclass method
我在继承 class 中覆盖 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()
我想更改包含在 class 中的我的字符串以用于各种用途。有办法做到这一点吗?因为我从堆栈中尝试了很多东西,没有人帮助我。
有一个解释我想做什么:
在init中,我初始化了Sentence class:
self.sentence = Sentence("")
Mainloop,用户可以在其中更改句子:
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()
字符串未更改。
由于 Python 等优化语言对字符串执行(即它们是不可变的,因此可以重复使用相同的字符串)我认为从 str 继承不是一个好习惯,相反,你可以写一个 class 来包装字符串:
class Sentence:
def __init__(self, msg: str):
self.msg = msg
def simplify(self):
self.msg = self.msg.lower().strip()
例如,如果您过于频繁地更改字符串并且 运行 遇到性能问题,您可以通过这种方式改进您的实施。
我在继承 class 中覆盖 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()
我想更改包含在 class 中的我的字符串以用于各种用途。有办法做到这一点吗?因为我从堆栈中尝试了很多东西,没有人帮助我。
有一个解释我想做什么:
在init中,我初始化了Sentence class:
self.sentence = Sentence("")
Mainloop,用户可以在其中更改句子:
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()
字符串未更改。
由于 Python 等优化语言对字符串执行(即它们是不可变的,因此可以重复使用相同的字符串)我认为从 str 继承不是一个好习惯,相反,你可以写一个 class 来包装字符串:
class Sentence:
def __init__(self, msg: str):
self.msg = msg
def simplify(self):
self.msg = self.msg.lower().strip()
例如,如果您过于频繁地更改字符串并且 运行 遇到性能问题,您可以通过这种方式改进您的实施。