函数调用期间意外更改了属性值

时间:2017-10-04 08:25:31

标签: python python-3.x

刚刚在stackoveflow注册,因为我在python 3.6遇到了一个奇怪的类属性更改问题(编辑器:spyder 3.1.4)。不知道如何恰当地描述它,所以我的道歉,如果以前有类似的问题。以下是有问题的代码段:

    class Node:
        def __init__(self, s = '', c = []):
            self.s = s
            self.c = c
    ...
    def somefunction(p):
        currentnode = a_node # a previous Node instance
        p_node = Node(s = p) # debugging showed after this step, p_node.c == []
        currentnode.c.append(p_node) # now, somehow p_node.c == [ p_node ], and still currentnode is not p_node
        currentnode = p_node

我已经检查过以确保没有意外的相互引用,并且已将Node.c的属性从list()更改为set(),同样的事情发生了。对此意外类属性值的任何解释都会发生变化?非常感谢!

0 个答案:

没有答案