在Python

时间:2018-03-15 16:15:35

标签: python-3.x

我有一些丑陋的代码写入一堆属性。看来我应该能够遍历列表来执行此操作。我将如何遍历['command','options','library']并设置相关属性?

    <snip>

    try:
        self.command = data_dict['command']
    except KeyError:
        pass

    try:
        self.options = data_dict['options']
    except KeyError:
        pass

    try:
        self.library = data_dict['library']
    except KeyError:
        pass

   <snip>

2 个答案:

答案 0 :(得分:1)

使用setattr

for name in ['command', 'options', 'library']:
    try:
        value = data_dict[name]
    except KeyError:
        pass
    else:
        setattr(self, name, value)

答案 1 :(得分:1)

您可以使用setattr设置具有动态名称的属性。

在我看来,更清楚地检查密钥是否存在而不是处理KeyError

for name in ['command', 'options', 'library']:
    if name in data_dict:
        setattr(self, name, value)