我有以下课程:
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。第一次运行良好,但再次运行时,输出将更改。我认为这是因为列表首字母的值未重置。如何在每次通话时将该值重置为原始值,并且不更改它?
答案 0 :(得分:2)
在__call__
函数中,您可以创建一个新副本self.initials
并将其存储在l
中,然后对其进行操作,以使原始副本不受影响。可以这样做:
l = self.initials.copy()
在__call__
的第一行中。