替代 __init__
Alternative to __init__
我有一个 Python class 具有以下 __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 总是 returns 回到它以前的状态。
如何在不恢复列表的情况下更新此列表?到目前为止我已经尝试过:
- 将新列表作为变量传递,但是 ParentClass 很复杂,这个解决方案成了一场噩梦,
- 制作另一个属性,但迟早我必须将其声明为整个 class,
的全局变量
- 列出步骤a 属性,但我只是一个初学者,陷入了无限循环的陷阱
请帮忙。
如果您希望将 my_list
设为 class 属性:
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
我有一个 Python class 具有以下 __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 总是 returns 回到它以前的状态。
如何在不恢复列表的情况下更新此列表?到目前为止我已经尝试过:
- 将新列表作为变量传递,但是 ParentClass 很复杂,这个解决方案成了一场噩梦,
- 制作另一个属性,但迟早我必须将其声明为整个 class, 的全局变量
- 列出步骤a 属性,但我只是一个初学者,陷入了无限循环的陷阱
请帮忙。
如果您希望将 my_list
设为 class 属性:
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