[英]Python code refactoring question. Applying functions to multiple elements
我有看起來像這樣的代碼:
self.ui.foo.setEnabled(False)
self.ui.bar.setEnabled(False)
self.ui.item.setEnabled(False)
self.ui.item2.setEnabled(False)
self.ui.item3.setEnabled(False)
我想把它變成這樣:
items = [foo,bar,item,item2,item3]
for elm in items:
self.ui.elm.setEnabled(False)
但是顯然,僅在列表中包含“ self.ui”部分的變量是無效的,並且我寧願不要為列表中的每個元素都鍵入“ self.ui”,因為這實際上並沒有更好。 我該如何重寫我的第一個代碼,使其類似於我所談論的內容?
使用內置的getattr函數,使對象具有通過其屬性名稱調用的函數:
items = ['foo', 'bar', 'item', 'item2', 'item3']
for elm in items:
getattr(self.ui, elm).setEnabled(False)
您可以嘗試類似:
items = [foo,bar,item,item2,item3]
ui = self.ui
for elm in items:
ui.elm.setEnabled(False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.