python - 为什么对象类定义会产生影响

标签 python class oop object instance

如何确保三个 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 变量,并创建/更改其类变量 - IDname > ,然后将该特定类插入到 items 列表中。

在循环的每次迭代中,item 都指向同一个类(不是实例,而是类),因为您没有创建类的实例,而是直接获取类本身.

关于python - 为什么对象类定义会产生影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152631/

相关文章:

python - 比较列表和文本文件

c++ - 是否可以创建这样的 C++ 宏来将您的标准(继承的)类包装到应用程序中?

django - 寻找基于 Django 类的 View 并在单个页面上具有多个表单示例

python - 用python2.7阅读docx

python - 如何删除或屏蔽 numpy 数组相对于另一个条目的条目

c++ - 一个类应该能够输出其内容还是另一个类应该这样做?

delphi - 如果没有显式调用,Delphi 是否调用继承于重写过程的方法

unit-testing - 在使用模拟对象时,如何防止我的单元测试需要有关实现内部的知识?

python - 计算2个张量所有元素之间的距离

java - 从 JFrame 获取输入