将对象重置为初始状态Python

时间:2020-03-29 07:01:42

标签: python oop constructor reset simplify

我正在寻找一种有关重置对象(当前为计划代码)的适当方式的指针。我现在想到的是下面。唯一的问题是,在其他方法中定义的许多其他属性在我调用init时不会被删除。这对我构造对象的方式来说不是问题(在运行模拟方法时,始终会重新计算init中未定义的所有属性)。但是,我感觉不太干净-我希望将其完全重置为初始化状态,并且在init之外未定义任何属性。

class foo:

        def __init__(self, formaat):
                self.format == formaat
                # process format below:
                if formaat == one:
                        self.one = 1
                if formaat == two:
                        self.two = 2
                # ... other parameter imports below - dependent on the value of self.one/self.two

        def reset(self, formaat):
                self.__init__(formaat)

        def simulate(self):
                self.reset(self.format)
                print("doing stuff")

我尝试过的一件事是拥有一种自我复制的方法。尽管我认为执行此操作与在运行脚本中复制对象并重新分配对象之间并没有什么区别。

class foo:

    def __init__(self, formaat):
                self.format = formaat
                # process format below:
                if formaat == one:
                        self.one = 1
                if formaat == two:
                        self.two = 2
                # ... other parameter imports below

    def copymyself(self):
        self.copy = copy.deepcopy(foo(self.format)) 

    def simulate(self):
        print("doing stuff")

理想情况下,我希望每次都在启动时将模拟方法重置为其自身。在上面的示例代码中,我将必须执行以下运行脚本。

a = foo()
# loop the code below
a.copymyself()
a.simulate()
a = a.copy

我更喜欢单行显示-a.simulate(),就像reset方法一样。

1 个答案:

答案 0 :(得分:1)

每一次新运行都应有一个新的(干净的)对象。