刚刚在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()
,同样的事情发生了。对此意外类属性值的任何解释都会发生变化?非常感谢!