Альтернатива __init__
У меня есть класс Python со следующим __init__
метод:
class MyClass(ParentClass):
def __init__(self, **kwargs):
my_list = OrderedDict[
(1, 'abc'),
(2, 'def'),
(3, 'ghi'),
]
Я хотел изменить my_list с такой функцией:
def process_my_list(self):
new_list = self.my_list.__class__()
for index, item in self.my_list.items():
# process index or item
new_list[index] = new_item
self.my_list.clear()
self.my_list.update(new_list)
Я хотел реализовать это для изменения списка шагов формы. Однако в случае динамической формы каждый шаг является отдельным экземпляром, и, таким образом, __init__
вызывается с каждым шагом. В результате my_list всегда возвращается к своему предыдущему состоянию. Как я могу обновить этот список без его восстановления? Пока что я пробовал:
- передача нового списка в качестве переменной, но ParentClass сложен, и это решение стало кошмаром,
- создание другого атрибута, но рано или поздно мне придется объявить его как глобальную переменную для всего класса,
- сделав список шагов свойством, но я только начинающий и попал в ловушку бесконечного цикла
Пожалуйста помоги.
1 ответ
Решение
Если вы хотите сделать my_list
атрибут класса:
class MyClass(ParentClass):
my_list = OrderedDict([
(1, 'abc'),
(2, 'def'),
(3, 'ghi')
])
def __init__(self, **kwargs):
pass
@classmethod
def process_my_list(cls):
new_list = OrderedDict()
for index, item in cls.my_list.items():
# process index or item
new_list[index] = new_item
cls.my_list = new_list