【发布时间】:2022-01-26 22:41:49
【问题描述】:
我接受了重新创建一些流行的 Python 函数的挑战,其中之一是 string.count()。除了子字符串参数和起始索引(可选)之外,它还采用结束索引(也是可选的)。这是我的代码:
def count(self,substring,start=0):
self.substring = substring
self.start = start
self.queue = 0
self.counter = 0
for a in self.string[start:]:
if a == self.substring[0]:
self.queue += 1
if a == self.substring[len(self.substring) - 1] and self.queue != 0:
self.queue -= 1
self.counter += 1
return self.counter
我在这个函数之外定义了一些变量:self.string,它是原始字符串本身。你可以看到我没有包含end 参数,这就是我今天在这里的原因。我想将参数设置为:end=len(self.string) - 1,但它只是抛出错误并说:NameError: name 'self' is not defined。这个问题有方法解决吗?到目前为止,我可以说我的代码不是问题,因为它可以在没有参数的情况下完美运行,但我可能错了。
【问题讨论】:
-
你在使用类吗?因为如果你这样做,请提供完整的代码。如果不是,那么 self 在这里没有任何意义。
-
尝试在函数内部创建一个变量
end并赋予它len() 值,也许您无法访问参数空间内的变量。 -
是的,我正在使用类,但我认为我不需要提供整个代码,因为只有 self.string 与此函数相关
-
在整个代码中,您将本地值存储为实例属性。该类的实例将保留最后计数的子字符串、最后开始位置、计数器的值和队列的值的副本。这些值应该存储在本地(即从一开始就删除“self.”。)
标签: python python-class