Python列表用作类属性的奇怪行为

时间:2018-08-30 20:52:44

标签: python python-3.x

我创建了一个类似于以下内容的Python类:

class Node(object):
    """docstring for Node"""
    def __init__(self, node_id, lng, lat, gid, raw_data=[],quantized_data=[]):
        super(Node, self).__init__()
        self.node_id = node_id
        self.lng = lng
        self.lat = lat
        self.gid = gid
        self.raw_data = raw_data
        self.quantized_data = quantized_data

类节点具有两个具有默认值的属性,它们是空列表。 然后创建两个对象:

a = Node(1,1,1,1)
b = Node(2,2,2,2)

我发现,如果我更改一个对象的raw_data,则另一个对象也会更改。 例如:

a.raw_data.append('x')

然后b.raw_data也具有x

>>> b.__dict__
{'node_id': 2, 'lng': 2, 'lat': 2, 'gid': 2, 'raw_data': ['x'], 'quantized_data': []}

我想知道为什么更改一个对象的属性会影响另一个对象。显然,它们是两个单独的对象。这是怎么回事,还是我不明白? 谢谢

0 个答案:

没有答案