在可变字符串类python中重载del运算符

2024-04-25 09:09:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难编辑内置的del运算符并满足我的任务限制。在

在我的python类中,我的教授希望我们从一个类开始,这个类创建的字符串是可变的,名为Mutstr。在包含字符串“oogyboogy”的Mutstr实例中,在三个del命令中,他希望我们去掉字符串“oogyboogy”中的“gyb”。在

叹息。如此糟糕的作业。。。不管怎样。在

我下面有两个代码片段,它们完成了消除“gyb”的任务。在

不幸的是,我的两个版本都依赖于一个del命令。我相信我的教授想要三个单独的调用来逐个删除这些索引。在

在整个字符串中遍历对每个索引求值以检查它是否是“oogyboogy”中间字符“gyb”的特定成员的最佳方法是什么

现在,当我运行这个程序时,这两个功能都起作用:

>>> one = Mutstr('oogyboogy')
>>> del one[2]
>>> one.get()
'oooogy'

我认为这是正确的答案。但是,我认为我完成任务的方式并不符合他的问题限制:

^{pr2}$

我有另一个版本也是这样:

    def __delitem__(self, index):
      if 'g' in self.str:
          self.str = self.str[:index] + self.str[index+1:]
      if 'y' in self.str:
          self.str = self.str[:index] + self.str[index+1:]
      if 'b' in self.str:
          self.str = self.str[:index] + self.str[index+1:]

Tags: 字符串in命令self版本编辑indexif
2条回答

从我阅读作业的方式来看,你的教授可能在寻找类似以下内容:

class Mutstr(object):
    def __init__(self, st=""):
          self.st = st

    def get(self):
          return self.st

    def __delitem__(self, index):
          self.st = self.st[:index] + self.st[index+1:]

one = Mutstr('oogyboogy')
del one[4]
del one[3]
del one[2]
print one.get()

你的教授几乎肯定想要这些语义学:

>>> one = Mutstr('oogyboogy')
>>> del one[2] # deletes g
>>> del one[2] # deletes y
>>> del one[2] # deletes b
>>> one.get()
'oooogy'

因此,您应该只删除__delitem__中的一个字符。不要硬编码__delitem__函数中的字符值,这只是不好的品味。在

相关问题 更多 >