我一直在做一个利用PyQt的项目。在这个项目中,我们正在处理对“模块”(我们称之为模块)的一些更改。其中一些更改被转发到父类中的列表。最重要的一点是,这些更改与列表中的项目保持一致。你知道吗
下面是一些代码的一个小例子,这些代码已经被用来适应我正在尝试做的事情。你知道吗
class Module:
some_list = []
def setList(self, _list, _item):
try:
_list[_list.index(_item)] = _item
except:
_list.append(_item)
class someUI(Module):
index = 0
def __init__(self):
super().__init__()
def setList(self, _list, _item):
super().setList(_list, _item)
f = someUI()
g = someUI()
f.setList(f.some_list, 'item1')
g.setList(g.some_list, 'item2')
如您所见,我添加了一个列表some_list
,任何扩展Module
类的类都可以访问该列表。
预期的结果应该是,每当我们添加新模块(由f
和g
给出)时,它们在some_list
中的相应空间都应该被记住。你知道吗
换句话说,当一个新的“模块”被添加时,一个新的空间应该被添加到some_list
。每当编辑“module”时,我们只希望some_list
中的相应项发生更改。
例如:如果我正在处理f
,那么相应的位置some_list[0]
应该是唯一发生变化的地方。如果我在处理g
,那么相应的位置some_list[1]
应该是事情发生变化的唯一地方。但是,如果some_list[0]
中不存在任何内容,那么我们就要创建它。正如您所看到的setList
是这样做的一种尝试。你知道吗
当我们添加新的项和类时,这应该保持一致。基本上,我们希望将some_list
的索引和每个新对象的实例化绑定在一起。你知道吗
class anotherUI(Module):
...
h = anotherUI()
h.setList(h.some_list, 'item3')
再胡闹一点之后,我发现我可以用字典来做我想做的事。你知道吗
class Module:
some_list = {}
def setItem(self, name, item):
self.some_list[name] = item
class someUI(Module):
index = -1
def __init__(self):
super().__init__()
someUI.index += 1
self.curr_count = someUI.index
def setItem(self, _item, **kwargs):
super().setItem(self.curr_count, _item)
f = someUI()
g = someUI()
f.setItem('item1')
g.setItem('item2')
f.setItem('item3')
Output:
{0: 'item3', 1: 'item2'}
然而,出现了一个新问题。如何添加一个新类,并让它认识到它不应该覆盖字典中的项?你知道吗
class anotherUI(Module):
...
h = anotherUI()
h.setList('item3')
Output
{0: 'item3', 1: 'item2', 2: 'item3'}
目前没有回答
相关问题 更多 >
编程相关推荐