[英]Python appending objects into a list- overwrite object issue
将对象附加到 Python 的列表中时,我遇到了这个问题。 在检索到 JSON 文件后,它将每个值分配到House object 并将其附加到房屋列表中。 但是,在添加第二个 object 之后,它会覆盖列表中的第一个 object。 你能给我帮助吗?
jsonfile.json
"features": [
{
"properties": {
"id": "ea299c1e-2bbb-5a97-bb94-befe384f0eb2",
"name": "Albert"
},
{
"properties": {
"id": "47200ba4-db80-56fa-99ad-c4abe7296376",
"name": "Batman"
}
python.py
class House:
def __init__(self, id, name):
self.id = id
self.name=name
houses =[]
......
with open('./data/jsonfile.json', 'r') as myfile:
data = myfile.read()
obj = json.loads(data)['features']
for o in obj:
print(o['properties']['id'])
House.id = o['properties']['id']
House.name = o['properties']['name]
print(House.id)
houses.append(House)
print("----------------------")
print("----------------------")
print(houses[0].id)
print(houses[1].id)
print(len(houses))
安慰
ea299c1e-2bbb-5a97-bb94-befe384f0eb2
ea299c1e-2bbb-5a97-bb94-befe384f0eb2
----------------------
47200ba4-db80-56fa-99ad-c4abe7296376
47200ba4-db80-56fa-99ad-c4abe7296376
----------------------
----------------------
47200ba4-db80-56fa-99ad-c4abe7296376. <--- It should be 'ea299c1e-2bbb-5a97-bb94-befe384f0eb2'
47200ba4-db80-56fa-99ad-c4abe7296376
2
代替
House.id = o['properties']['id']
和
dahouse = House(o['properties']['id'])
然后dahouse
。
您编写它的方式,您不断修改 class 而不是实际创建新实例。
根据您的代码,您不是 class 的实例化 object。 届时请使用下面的代码 append 到列表中。
houses.append(House(o['properties']['id']))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.