亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取類中特定類型的對象并更改其屬性

獲取類中特定類型的對象并更改其屬性

qq_遁去的一_1 2023-03-30 17:18:35
我有三個類 Box、Tab 和 UI,前兩個在 UI 中被調用。我想獲取框實例(在本例中為 Ghi 和 Dni)并在函數中更改它們的項目(正如您在 get_boxes() 函數中看到的描述)。class Box():    def __init__(self):        self.name = ''        self.status = 'no'class Tab():    def __init__(self):        self.name = ''class UI():    def __init__(self):        self.__setupui()    def __setupui(self):        self.Ghi = Box()        self.Ghi.name = 'Ghi'        self.Ghi.status = 'yes'        self.Dni = Box()        self.Dni.name = 'Dni'        self.tab = Tab()        self.tab.name = 'tab1'    def get_boxes(self):        # get the Box instances in the UI (such as Ghi and Dni)        # change their status        return  # list of Box instances nameui_sample = UI()如何定義 get_boxes() 函數?或者一般來說我怎樣才能通過自我循環。對象并檢查它們的類型然后在類中更改它們的值?
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

我會在創建所有項目時將其分配給一個列表,這樣很容易迭代,比如self.controls什么的。

type如果您只想對列表中的某些控件執行某些操作,則可以使用 python 的函數來獲取對象的類型名稱。

否則您可能會使用dir(self)orself.__dict__來迭代所有成員,然后您將不得不進行類型檢查。


查看完整回答
反對 回復 2023-03-30
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

要詳細說明@jnnnnn,答案get_boxes將如下所示:


def get_boxes(self):

    return [a for a in self.__dict__ if isinstance(a, Box)]

或者更好的是設置如下:


用戶界面類():


def __init__(self):

    self.boxes = []

    self.__setupui()



def __setupui(self):

    Ghi = Box()

    Ghi.name = 'Ghi'

    Ghi.status = 'yes'

    self.boxes.append(Ghi)


    Dni = Box()

    Dni.name = 'Dni'

    self.boxes.append(Dni)


    self.tab = Tab()

    self.tab.name = 'tab1'


def get_boxes(self):

    return self.boxes


查看完整回答
反對 回復 2023-03-30
  • 2 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號