如果遇到python类的问题,更改类的一个实例的成员变量也会改变另一个实例的成员变量

时间:2016-10-31 13:56:16

标签: python class

class Element():
    def __init__(self, tag, childs = [], attributes = {}):
        self.childs = childs
        self.tag = tag
        self.attrib = attributes

    def get_childs(self):
        return self.childs

    def add_Child(self, child):
        self.childs.append(child)

class Html():
    def __init__(self):
        self.tag1 = Element("head")
        self.tag2 = Element("body")
        tag0 = Element("html", [self.tag1, self.tag2])

    def get_body(self):
        return self.tag2

    def get_head(self):
        return self.tag1

def main():
    html_object = Html()

   print html_object.get_body().get_childs()
   print html_object.get_head().get_childs()
   print "---------------"
   html_object.get_body().add_Child("new_child_added_to_body_ELEMENT")
   print "---------------"
   print html_object.get_body().get_childs()
   print html_object.get_head().get_childs()

if __name__ == "__main__":
   main()

执行上面的代码行时,我得到以下输出:

[]
[]
---------------
---------------
['new_child_added_to_body_ELEMENT']
['new_child_added_to_body_ELEMENT']

虽然我想将'new_child_added_to_body_ELEMENT'仅插入 self.childs self.childs 列表中(“ body“元素”),我最终获得的是该行也被添加到 self.childs self.tag1 列表中(“head”元素)也在 Html 类init中声明。

显然我错过了一些关于python类的内容,所以我真的很感激我对错误的解释。

0 个答案:

没有答案