我还在学习Python类的工作原理。这是我的示例代码:
class StringPopped(str):
def __init__(self, input):
super().__init__()
self.output = input[:-1]
str1 = StringPopped('Alice')
然后>>> str1
的输出为Alice
,str1.output
为Alic
。如何使str1
与str1.output
具有相同的结果?
我尝试了__repr__
,但这只会改变显示的内容,而不会改变str1
的实际价值。有没有办法发表像self = self.output
这样的陈述?
答案 0 :(得分:1)
字符串是不可变的。我猜您必须使用__new__
,而不是__init__
来解决此问题:
>>> class StringPopped(str):
... def __new__(cls, val):
... return super().__new__(cls, val[:-1])
...
>>> s = StringPopped('Alice')
>>> s
'Alic'
>>> type(s)
__main__.StringPopped