图中顶点之间的意外连接

Unintended connections between vertices in graph

所以我正在做一些图论练习,并且有这个简单的顶点 class:

class Vertex:
    def __init__(self, value, connections={}):
        self.value = value
        self.connections = connections

    def add_connection(self, vertex, weight=1):
        self.connections[vertex] = weight

然后我创建了一些像这样的顶点:

a = Vertex(1)
b = Vertex(2)
c = Vertex(3)
d = Vertex(4)

并尝试像这样在它们之间添加边:

a.add_connection(b)
a.add_connection(c)

当我打印 a 的连接时,它会正常工作并显示它连接到 b 和 c。 但是,当我打印到 b 顶点的连接时,它显示了到自身的连接和到 c 顶点的连接(与 a 顶点相同的连接)。
我如何将其修复为仅在预期顶点之间有连接?

因为对象都共享同一个 connections 字典,这是因为 methods/functions 的默认值是在它们的定义中计算的,避免这种情况的一种方法是使用这样的东西:

class Vertex:
    def __init__(self, value, connections=None):
        if connections is None:
            connections = {}
        
        self.value = value
        self.connections = connections

    def add_connection(self, vertex, weight=1):
        self.connections[vertex] = weight