我有以下课程:
class SummableSequence(object):
initials=[]
def __init__(self, *initial):
for i in initial:
self.initials.append(i)
def __call__(self, i):
l=self.initials
new_number = sum(l)
for j in range(i):
new_number=sum(l)
l.append(new_number)
del l[0]
return l
当我实例化它时:
new= SummableSequence(0,1)
每次调用它时,我都期望得到相同的输出:
new(5)
输出应该是5,它在第一次运行时运行良好,但是在再次运行时,输出会发生变化。我认为这是因为列表首字母的值没有被重置。如何将该值重置为原始值,而不会在每次打电话时更改它?
发布于 2020-01-31 06:03:46
在__call__
函数中,您可以创建一个新的副本self.initials
并将其存储在l
中,然后对其进行操作,以使原始副本不受影响。可以这样做:
l = self.initials.copy()
在__call__
的第一行。
https://stackoverflow.com/questions/60005352
复制