在可变字符串中重载 del 运算符 class python
Overloading the del operator in a mutable string class python
我很难编辑内置的 del 运算符并满足我的任务限制。
在我的 python class 中,我的教授希望我们从一个 class 开始,创建一个名为 Mutstr 的可变字符串。在包含字符串 "oogyboogy" 的 Mutstr 实例中,他希望我们在三个 del 命令中删除字符串 "oogyboogy".
中的 "gyb"
唉。如此糟糕的作业……无论如何。
我在下面有两个代码片段可以完成摆脱 "gyb"。
不幸的是,我的两个版本都依赖于一个 del 命令。我相信我的教授想要三个单独的调用来按索引删除这些每个索引。
遍历整个字符串评估每个索引以检查它是否是 "oogyboogy"
中间字符 'gyb' 的特定成员的最佳方法是什么
现在,当我 运行 这个时,这两个都有效:
>>> one = Mutstr('oogyboogy')
>>> del one[2]
>>> one.get()
'oooogy'
我认为这是正确答案。但是,我认为我的实现方式不符合他的问题约束:
class Mutstr():
def __init__(self,st = ""):
self.str = st
def get(self):
return self.str
def __delitem__(self, index):
self.str = self.str[:index] + self.str[index+3:]
我这里有另一个版本做同样的事情:
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:]
按照我阅读作业的方式,您的教授可能正在寻找类似的内容:
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__
函数中对字符值进行硬编码,那样品味很差。
我很难编辑内置的 del 运算符并满足我的任务限制。
在我的 python class 中,我的教授希望我们从一个 class 开始,创建一个名为 Mutstr 的可变字符串。在包含字符串 "oogyboogy" 的 Mutstr 实例中,他希望我们在三个 del 命令中删除字符串 "oogyboogy".
中的 "gyb"唉。如此糟糕的作业……无论如何。
我在下面有两个代码片段可以完成摆脱 "gyb"。
不幸的是,我的两个版本都依赖于一个 del 命令。我相信我的教授想要三个单独的调用来按索引删除这些每个索引。
遍历整个字符串评估每个索引以检查它是否是 "oogyboogy"
中间字符 'gyb' 的特定成员的最佳方法是什么现在,当我 运行 这个时,这两个都有效:
>>> one = Mutstr('oogyboogy')
>>> del one[2]
>>> one.get()
'oooogy'
我认为这是正确答案。但是,我认为我的实现方式不符合他的问题约束:
class Mutstr():
def __init__(self,st = ""):
self.str = st
def get(self):
return self.str
def __delitem__(self, index):
self.str = self.str[:index] + self.str[index+3:]
我这里有另一个版本做同样的事情:
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:]
按照我阅读作业的方式,您的教授可能正在寻找类似的内容:
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__
函数中对字符值进行硬编码,那样品味很差。