在python中循环选定对象属性的列表以创建树vi

2024-09-29 07:18:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个对象Restaurant

class Restaurant:
    def __init__(self, name, location, phone, parent = None):
        self.staff = []
        self.tables = []
        self.menu = []
        self.name = name
        self.location = location
        self.phone = phone

        self.dict = {"Staff": self.staff, "Tables": self.tables, "Menu": self.menu}

    def addStaff(self, staff_object):
        self.staff.append(staff_object)

然后我用类方法addStaff向列表self.staff添加新的人员对象(带有一些属性)。在

添加对象后,我打印self.dict,它仍然是空的。“更新”self.dict中的值以获得正确的值并最终在树状视图中显示的正确方法是什么:

-员工
---员工1
---员工2
--…
-表格
---表1
---表2
--…
-菜单
---菜单1
---菜单2
---菜单3


Tags: 对象nameselftablesobjectdef菜单员工
3条回答

我已经解决了84行的问题。我改的是:

if not self.MBD_system_constructed

收件人:

^{pr2}$

这是一个如何添加实例化类和添加项的示例。在

class Restaurant:
    def __init__(self, name, location, phone, parent = None):
        self.staff = []
        self.tables = []
        self.menu = []
        self.name = name
        self.location = location
        self.phone = phone

        self.rest_dict = {"Staff": self.staff, "Tables": self.tables, "Menu": self.menu}

    def addStaff(self, staff_object):
        self.staff.append(staff_object)

    def addTables(self, table_object):
        self.tables.append(table_object)

    def addMenu(self, menu_object):
        self.menu.append(menu_object)
r = Restaurant("foo","bar",911) # instantiate 
r.addStaff("Foo")
r.addStaff("Bar") # append using method
r.staff.append("Foo1") # you can also  access attributes directly
r.addMenu("Lunch")
r.addMenu("Dinner")
r.menu.append("Lunch")
r.addTables(1)
r.addTables(2)
r.tables.append(3)
print r.rest_dict

{'Menu': ['Lunch', 'Dinner', 'Lunch'], 'Tables': [1, 2, 3], 'Staff': ['Foo', 'Bar', 'Foo1']}

您的实际代码包含以下行

self.joints = ...

而不是像你发布的代码那样附加到列表中。这不会修改现有列表;它将self.joints属性指向一个新列表,而引用旧列表的所有内容都不会受到影响。从那时起,任何访问self.joints的都使用新列表,而任何使用self.model_view[2]的都使用旧列表。在

别那样做。如果要设置现有列表的内容,请在以下位置切片指定内容:

^{pr2}$

一般来说,如果您真正想要修改的是对象,则不要直接赋值给变量。在

相关问题 更多 >