代码之家  ›  专栏  ›  技术社区  ›  backus sompnd

python代码重构问题。简化

  •  3
  • backus sompnd  · 技术社区  · 16 年前

    我有这样的代码:

    self.ui.foo = False
    self.ui.bar = False
    self.ui.item = False
    self.ui.item2 = False 
    self.ui.item3 = False
    

    我想把它变成这样:

    items = [foo,bar,item,item2,item3]
    for elm in items:
        self.ui.elm = False
    

    但是很明显,只让变量在列表中去掉“self.ui”部分是无效的,我不想为列表中的每个元素都键入“self.ui”,因为这并不是更好的选择。我怎么能重写我的第一个代码,使它像我所说的那样?

    2 回复  |  直到 16 年前
        1
  •  6
  •   David Z    16 年前

    您可以这样做:

    items = ['foo','bar','item','item2','item3']
    for elm in items:
        setattr(self.ui, elm, False)
    
        2
  •  4
  •   Nikhil    16 年前

    items 需要是字符串列表。

    items = ['foo', 'bar', 'item', 'item2', 'item3']
    for elm in items:
        setattr(self.ui, elm, False)