Я ищу указатель на соответствующий способ сброса объекта (код планирования в настоящее время). То, о чем я сейчас думаю, ниже. Единственная проблема заключается в том, что есть много других атрибутов, определенных в других методах, которые не удаляются, когда я вспоминаю 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 (), как в случае с методом сброса.