Python 如何从列表中创建和检索类对象

Python 如何从列表中创建和检索类对象,python,python-3.4,Python,Python 3.4,我有以下类型的xml: <?xml version="1.0" encoding="UTF-8"?> <RootNode> <childElem> <prop1 type="int">1</prop1> <prop2 type="int">2</prop2> </childelem> <childElem> <prop1 type="int">3</prop1> &

我有以下类型的xml:

<?xml version="1.0" encoding="UTF-8"?>
<RootNode>
<childElem>
<prop1 type="int">1</prop1>
<prop2 type="int">2</prop2>
</childelem>
<childElem>
<prop1 type="int">3</prop1>
<prop2 type="int">4</prop2>
</childelem>
<childElem>
<prop1 type="int">5</prop1>
<prop2 type="int">6</prop2>
</childelem>
<childElem>
<prop1 type="int">7</prop1>
<prop2 type="int">8</prop2>
</childelem>
</RootNode>

1.
2.
3.
4.
5.
6.
7.
8.
我已经定义了类来将所有子元素存储为类的不同实例。 我试图将对象附加到列表中,然后检索

在这个xml中,总共有4个子元素。 创建每个对象后,我已打印每个对象的属性。 在这里,我看到每个对象都有不同的属性值

但在那之后,当我试图在for循环中从列表中检索每个对象并打印每个检索到的对象的属性时,它会打印最后一个childelem对象四次

下面是代码片段

def getObjects(self,xmlStr,elem):
    objList = []
    root = ET.fromstring(xmlStr)
    rootNode = root.find(elem)
    for obj in rootNode.findall('childElem'):
        myObj = Obj()
        for props in obj:
            myObj.populate(props.tag,props.text)
        print(">>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<")
        print(myObj.getProps())
        print(">>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<")
        objList.append(myObj)

    for obj1 in objList:
        print(obj1.getProps())
        print("@@@@@@@@@@@@@@@@@@@@@@@@@@")
    return objList
class Obj:
    properties = {}

    def populate(self,name,value):
        self.properties[name] = value
    def getProps(self)
        return self.properties
def getObjects(self、xmlStr、elem):
对象列表=[]
root=ET.fromstring(xmlStr)
rootNode=root.find(元素)
对于rootNode.findall('childElem')中的obj:
myObj=Obj()
对于obj中的道具:
填充(props.tag、props.text)

打印(“>>>>>>>>>>>>>>>>您正在类上的
Obj
的不同实例之间共享一个可变字典。如果将其更改为实例变量(通过在
Obj.\uu init\uu
中设置
self.properties
),则代码应按您的意愿工作:

class Obj:

    def __init__(self):
        self.properties = {}

    # The rest of Obj's methods.

目前,您的代码创建了一个字典,
Obj.properties
(仍然可以通过实例上的
self.properties
访问该字典)。然后,
myObj.populate
调用该字典的每次更新,因此最后一个元素的详细信息将打印4次。

能否将populate和getProps方法的代码发布在此处?能否显示输出?添加了populate和getProps的代码,还添加了输出
class Obj:

    def __init__(self):
        self.properties = {}

    # The rest of Obj's methods.