python - Python在循环中创建对象将项目附加到同一个列表而不是新列表
问题描述
我有一个在循环内创建对象的代码。该对象有一个包含不同类型对象的列表。
class A:
a = ''
def __init__(self):
pass
class B:
def __init__(self):
pass
list_of_A = list()
for i in range(3):
_b = B()
for j in range(2):
_a = A()
_b.list_of_A.append(_a)
print(len(_b.list_of_A))
输出为:2 4 6
我的预期是:2 2 2
我尝试_b
在内循环结束时删除。但是没有用。我应该如何确保循环创建 B 的新对象。
解决方案
一种方法是创建list_of_A
一个实例变量,因此每次创建对象时它都会创建新列表:
class B:
def __init__(self):
self.list_of_A = list() # or = []
当您有以下安排时:
class B:
def __init__(self):
pass
list_of_A = list()
list_of_A
由该类的所有对象共享(因为这是一个类变量),因此您要附加到同一个列表对象。
推荐阅读
- python - 由于焦点在前一帧的输入,Tkinter 绑定方法不起作用
- azure - 列出和分组多个分支的构建 ID
- python - 当单词包含在另一列中时从一列打印
- node.js - 如何使用 find $or 查询返回用于查找文档的任何字段?
- java - 单击列表项时 ViewPager 变为空白
- angular - 减速器,实体适配器:类型上不存在属性“帐户” - Angular 7、Rxjs 6、Ngrx
- usb - 如何在停止模式下保持 USB 连接
- python - Keras 在自定义损失函数中替换 log(0)
- python - 在 bluehost.com 上使用 SMTP_SSL 会导致 ConnectionResetError: [WinError 10054] 现有连接被远程主机强制关闭
- c# - 如何从我的 Windows Pocket PC 5.0 获取 MAC 地址