获取类中特定类型的对象并更改其属性

我有三个类 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 name


ui_sample = UI()

如何定义 get_boxes() 函数?或者一般来说我怎样才能通过自我循环。对象并检查它们的类型然后在类中更改它们的值?


qq_遁去的一_1
浏览 111回答 2
2回答

斯蒂芬大帝

我会在创建所有项目时将其分配给一个列表,这样很容易迭代,比如self.controls什么的。type如果您只想对列表中的某些控件执行某些操作,则可以使用 python 的函数来获取对象的类型名称。否则您可能会使用dir(self)orself.__dict__来迭代所有成员,然后您将不得不进行类型检查。

元芳怎么了

要详细说明@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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python