我有三个类 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__
来迭代所有成员,然后您将不得不进行类型检查。
元芳怎么了
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
添加回答
举报
0/150
提交
取消