为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信