Альтернатива __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
Другие вопросы по тегам