【发布时间】:2014-03-17 15:03:57
【问题描述】:
这可能更像是一个基于意见的问题,但我还是会继续!
我有许多从远程设备获取多个值的函数,我在进行计算时需要使用最新的值。由于它是一个远程设备,因此在请求值时我必须使用设备特定的 getter。
(我使用的是 telnetlib,但我认为这无关紧要)
在实际使用中,可以肯定地假设我将拥有大约 10 多个设备,并从每个设备中获取 10 多个值。与设备的通信有可能会失败并引发异常。在这种情况下,我收集的所有数据都将毫无用处,因为我需要所有这些数据来做我的计算,我不应该保存它,因为它以后不会是最新的值。
到目前为止,我的函数看起来像这样......主要思想是如果任何 getter 失败,则不会执行附加行:
def GetTraits(object_list):
trait_dict = {"Foo":[],"Bar":[]}
for obj in object_list:
try:
Foo = obj.GetFoo()
Bar = obj.GetBar()
trait_dict["Foo"].append(Foo)
trait_dict["Bar"].append(Bar)
except Exception as e:
print e
# None type will be handled by other functions that need these values
trait_dict["Foo"].append(None)
trait_dict["Bar"].append(None)
return trait_dict
然而,这感觉就像很多非常多余的代码,因为我可以在该字典中拥有 10 多个特征。
关于如何改进此代码的任何想法?提前致谢!
卡尔
【问题讨论】:
-
object_list 中的 obj 实际上是否有 obj.GetTrait1() 等编号方法?如果有,它们是如何编号的?
-
不,它们是唯一的名称
-
所以没有称为 .GetTrait[number here]() 的方法?
-
不,Traits 被命名为 GetFoo()、GetBar() 等,我用这个编辑了问题
标签: python list exception python-2.7