__init __

时间:2018-01-09 03:51:02

标签: python class instance dynamicform

我有一个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 个答案:

答案 0 :(得分: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