我这里有两种似乎不想互相交谈的方法。我认为我使用字典的方式有些错误,我可能对自己有些困惑:
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
消息可以简化为:
def load(self, msg):
loadState = {'foo1' { 'FirstObject':1, 'SecondObject':2 }, 'foo2' { 'FirstObject':3, 'SecondObject':4 }}
for name, value in foo_objects.iteritems():
self.program.supervisor.setI2c(value, foo=name)
这foo
是一个字符串,是中的键之一loadState
。
然后,您可以在foo
中循环播放setI2c
,其中foo
仍为字符串。这意味着您要遍历各个字符:
>>> foo = 'foo1'
>>> for name in foo:
... print name
...
f
o
o
1
您根本不需要该循环,您很可能希望这样做:
def setI2c(self, value_dict, foo=None):
object = self.objects[foo]
for name in value_dict:
register = reg(name)
register.value = regNameValueTuple[name]
但是您实际上并没有object
在代码中使用任何地方,因此可以完全删除该行。
如果setI2c()
始终希望foo
是名称列表,那么您应该在中传递一个列表load
:
self.program.supervisor.setI2c(value, foo=[name])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句