簡體   English   中英

Python代碼重構問題。 將功能應用於多個元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM