如何将类变量/对象重置为其初始状态?

时间:2020-01-31 13:59:50

标签: python class

我有以下课程:

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。第一次运行良好,但再次运行时,输出将更改。我认为这是因为列表首字母的值未重置。如何在每次通话时将该值重置为原始值,并且不更改它?

1 个答案:

答案 0 :(得分:2)

__call__函数中,您可以创建一个新副本self.initials并将其存储在l中,然后对其进行操作,以使原始副本不受影响。可以这样做:

l = self.initials.copy()

__call__的第一行中。