2010-06-29 2 views
3

У меня есть код, который выглядит примерно так:Вопрос рефакторинга кода Python. Упрощение

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» для каждого элемента в списке, потому что это действительно не намного лучше. Как я мог переписать свой первый код, чтобы сделать его чем-то вроде того, о чем я говорю?

ответ

6

Вот как это сделать:

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

items должен быть списком строк.

items = ['foo', 'bar', 'item', 'item2', 'item3'] 
for elm in items: 
    setattr(self.ui, elm, False) 
Смежные вопросы