python - 如何在不继承属性值的情况下在 Python 中的 for 循环内创建对象列表
问题描述
下面的代码创建了一个对象列表,其中包含一个作为属性的列表和一个将项目附加到该列表的方法,但是这个附加没有像我预期的那样工作。
我所期望的:每个对象内部的
每个列表只有 3 个元素。 MyList
MyObj
它是如何工作的:里面的
列表有 3 个元素里面
的列表有 6 个元素里面
的列表有 9 个元素MyList
MyObj[0]
MyList
MyObj[1]
MyList
MyObj[2]
在我看来,该对象MyObj[i]
附加了MyList
前一个对象MyObj[i-1]
。代码应该如何使每个列表MyList
中的每个列表MyObj[i]
都只有该方法插入的 3 个元素add_to_list
?
Python代码:
class MyClass:
MyList = []
def add_to_list(self):
for item in range(3):
self.MyList.append("Item " + str(item))
MyObj = []
for i in range(3):
MyObj.append(MyClass())
MyObj[i].add_to_list()
print("Object " + str(i))
print(MyObj[i].MyList)
解决方案
您还需要添加一行MyObj[i].MyList.clear()
:
MyObj = []
for i in range(3):
MyObj.append(MyClass())
MyObj[i].add_to_list()
print("Object " + str(i))
print(MyObj[i].MyList)
MyObj[i].MyList.clear()
输出:
Object 0
['Item 0', 'Item 1', 'Item 2']
Object 1
['Item 0', 'Item 1', 'Item 2']
Object 2
['Item 0', 'Item 1', 'Item 2']
推荐阅读
- python - 谁能告诉我内核 nparray 中用于卷积的 /4.0 代表什么?
- python - 在 ShuffleNet 中计算准确率函数
- python - 导入 ldap3 错误文件”
",第 1 行,在 文件“/usr/local/lib/python3.9/dist-packages/ldap3/__init__.py”,第 255 行,在 - javascript - 我可以使用 Fabric.js 在透明图像上叠加平铺图案吗?
- python - 为什么各种python库的双三次插值有区别?如何计算特定轴上的双三次插值?
- python - 如何在多个线程中运行`selenium-chromedriver`
- javascript - Lottie Hamburger Menu 在响应式页面中的使用
- c++ - 从内存加载 64 位 Windows PE 文件
- azure-devops - 如何识别 AzureDevops 中附加有变量组的管道列表
- python - BayesSearchCV 超参数依赖