如何确保三个 Item 实例都是唯一的“自包含”变量,而不仅仅是具有三个不同名称的相同数据?
class Item(object):
def __init__(self):
self.ID=None
self.name=None
items=[]
for row in range(3):
item=Item
item.ID=row
item.name='Item %s'%row
items.append(item)
for item in items:
print item.name
print 'True?:', items[0]==items[1]==items[2]
最佳答案
问题就在眼前 -
item=Item
这会将类设置为 item
,它不会创建该类的新实例。您需要将 Item
调用为 Item()
,以创建该类的新实例 -
item=Item()
在您原来的情况下,由于您将相同的类放入 item
变量,并创建/更改其类变量 - ID
和 name
> ,然后将该特定类插入到 items
列表中。
在循环的每次迭代中,item
都指向同一个类(不是实例,而是类),因为您没有创建类的实例,而是直接获取类本身.
关于python - 为什么对象类定义会产生影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152631/