繁体   English   中英

Python 将对象附加到列表中 - 覆盖 object 问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM