我这里有两种方法似乎不想互相交谈。我觉得我用字典的方式有点错误,我可能有点搞糊涂了:
def load(self, msg):
loadState = {'foo1' { 'FirstObject':1, 'SecondObject':2 }, 'foo2' { 'FirstObject':3, 'SecondObject':4 }}
foo_objects = loadState.keys()
for name in foo_objects:
if name == 'foo1':
ValueTuple = loadState[foo_objects[0]]
elif name == 'foo2':
ValueTuple = loadState[foo_objects[1]]
self.program.supervisor.setI2c( ValueTuple, foo = name ) #This is where I think it goes wrong
然后为了存储这些值,我将它们传递给这个方法,这个方法以前是有效的,但它与上面的新方法不同:
def setI2c( self, ValueTuple, foo=None ) :
for name in foo :
object = self.objects[name]
for name in ValueTuple :
register = reg(name)
register.value = regNameValueTuple[name]
编辑:我出错的部分:
self.program.supervisor.setI2c( ValueTuple, foo = [name] )
您的
load
消息可以简化为:这里,
foo
是一个字符串,loadState
中的一个键。你知道吗然后在
setI2c
中的foo
上循环,其中foo
仍然是字符串。这意味着您正在迭代单个字符:你根本不需要那个循环,你很可能想要这个:
但实际上,您并没有在代码中的任何地方使用
object
,因此可以完全删除该行。你知道吗如果
setI2c()
总是希望foo
是一个名称列表,那么您应该在load
中传入一个列表:相关问题 更多 >
编程相关推荐