我有一个对象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)
然后我使用类方法self.staff
将新的staff对象(带有一些属性)添加到列表addStaff
。
添加对象后,我打印self.dict
,它仍然是空的。什么是更新"的正确方法。 self.dict
中的值以获取正确的值,并最终在树视图中显示它们,如:
宝仕达
--- staff_1
--- staff_2
--...
-tables
--- TABLE_1
--- TABLE_2
--...
-menus
--- menu_1
--- menu_2
--- menu_3
答案 0 :(得分:2)
这是一个如何添加实例化类并添加项目的示例。
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']}
答案 1 :(得分:2)
您的真实代码包含
等行self.joints = ...
而不是像您发布的代码一样附加到列表中。这不会修改现有列表;将self.joints
属性指向新列表,而对旧列表具有引用的所有内容均不受影响。从那时起,访问self.joints
的任何内容都会使用新列表,而使用self.model_view[2]
的任何内容都会使用旧列表。
不要那样做。如果要设置现有列表的内容,请在以下位置切片分配内容:
self.joints[:] = ...
通常,如果您真正想要修改的是对象,则永远不要直接分配给变量。
答案 2 :(得分:0)
我已经解决了第84行的问题。我改变了它:
if not self.MBD_system_constructed
为:
if self.MBD_system_constructed