IDs de incremento automático para instâncias de classe

Aviso Lega: Trata-se de um projeto semestral no qual estou trabalhando atualmente. Minha pergunta é sobre um nível de implementação e não faz parte do esquema de classificação. Estou escrevendo este código apenas como uma maneira de testar a teoria que estou propondo para o artigo que vou escreve

Também considerei as respostas paraessa questã com pouca sorte, então não considere isso como uma duplicata dessa pergunta

O problem:

Tenho um gráfico (G = (V, E)). Em algum momento do meu algoritmo, preciso transformar isso em um hipergrafo (de certo modo) "recolhendo" vários nós (por exemplo,v_1, v_2, ..., v_n) em um nó (digamos,v). No contexto do problema, isso implica que eu preciso alterar as arestas emE tal que qualquer bordae entre qualquer um dev_1, v_2, v_n e qualquer outro nóu dentroV será alterado de modo quee agora está entreu ev.

Para capturar que agora podem existir várias arestas distintas entre qualquer par de nós, preciso criar um identificador exclusivo para cada aresta. Tentei fazer isso por meio de e ID, que atualmente não consigo implementar adequadamente.

Isto é o que eu tentei:

class Edge:
    _ID = 0
    def __init__(self, u, v, w, c,f=0):
        self.id = Edge._ID 
        Edge._ID += 1
        self.src = u
        self.dest = v
        self.weight = w
        self.capacity = c
        self.flow = f

o entanto, quando tento instanciar uma nova borda, recebo o seguinte erro:

>>> e = Edge(1,3,5,10,0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "UnsplittableFlow.py", line 14, in __init__
    self.id = Edge._ID; Edge._ID += 1
UnboundLocalError: local variable '_ID' referenced before assignment

EDITA:

Com as sugestões de algumas respostas, consegui corrigir o erro de instanciação. No entanto, outro erro persiste. Aqui está o meu código e os erros:

class Edge:
    _ID = 0
    def __init__(self, u, v, w, c,f=0):
        self.id = self._ID; self._ID += 1
        self.src = u
        self.dest = v
        self.weight = w
        self.capacity = c
        self.flow = f

Erro

>>> e = Edge(1,3,5,10,0)
>>> e.id
0
>>> Edge._ID
0

>>> f = Edge(2,3,5,10,0)
>>> f.id
0
>>> Edge._ID
0

Eu apreciaria qualquer ajuda

Obrigad

questionAnswers(4)

yourAnswerToTheQuestion