2010-06-29 4 views
3

J'ai du code qui ressemble à ceci:Question de refactorisation de code Python. Simplification

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

Et je voudrais en faire quelque chose comme ceci:

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

Mais il est évident que d'avoir les variables dans la liste avec la La partie 'self.ui' n'est pas valide, et je préférerais ne pas taper 'self.ui' pour chaque élément de la liste, car ce n'est vraiment pas mieux. Comment pourrais-je réécrire mon premier code pour en faire quelque chose comme ce dont je parle?

Répondre

6

Voici comment faire:

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

items doit être une liste de chaînes.

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