将对象重置为初始状态 Python
Reset Object To Initial State Python
我正在寻找有关重置对象的适当方法的指针(目前正在规划代码)。我目前想到的如下。唯一的问题是还有许多其他方法定义的其他属性在我调用 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() 就像使用重置方法的情况一样。
每个新的 运行 都值得一个新的(干净的)对象。
我正在寻找有关重置对象的适当方法的指针(目前正在规划代码)。我目前想到的如下。唯一的问题是还有许多其他方法定义的其他属性在我调用 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() 就像使用重置方法的情况一样。
每个新的 运行 都值得一个新的(干净的)对象。