我在处理 python 个对象时遇到了问题。它是同一个对象,但现在不同了

I have a trouble with python objects. It was the same object, but now it different

你可以看到,我已经创建了 class A 的两个实例。所以,a.d(一例字典)和 b.d(二实例字典)有与众不同!但它们不是,我们可以清楚地看到 a.d == b.d = True。好的,那么,这应该意味着如果我将修改 a.d,那么 b.d 也会被修改,对吧?不,现在他们不同了。你会说,好吧,他们只是按价值比较,而不是 link 价值。但是我在代码方面遇到了另一个问题:

class cluster(object):

    def __init__(self, id, points):
        self.id = id
        self.points = points
        self.distances = dict()  # maps ["other_cluster"] = distance_to_other_cluster

    def set_distance_to_cluster(self, other_cluster, distance):
        """Sets distance to itself and to other cluster"""

        assert self.distances != other_cluster.distances
        self.distances[other_cluster] = distance
        other_cluster.distances[self] = distance

最后我得到了所有集群的相同“距离”dict 对象。我做错了什么吗? :'(

字典不是常规数据类型,使用它们时必须非常小心。

a = [5]
b = a
b.append(3)

你会认为使用此代码 a=[5]b=[5,3] 但实际上它们都等于 [5, 3].

顺便说一句,当你赋值a.d["A"] = 1时,你把ARRAY变成了DICTIONARY,字典没有上面的问题所以它没有出现再次.

解决方案是从一开始就使用字典,因为它适合您的数据类型。