2014-05-22 3 views
0

파이썬을 사용하여 그래프를 따라 다양한 산책을 분석 할 계획입니다. 이를 위해 꼭지점 클래스를 만들었습니다.이 중 두 클래스는 가장자리를 형성하도록 연결될 수 있습니다. 정점의 연결은 연결 목록에 저장됩니다. 클래스에는 반환 된 연결 정점이있는 다른 함수도 있지만 간결하게 생략되었습니다. 어떤 이유로 링크 함수는 정점이 다른 지정되지 않은 정점 (이 예에서는 자체)과 연결되도록합니다. 이 원인은 무엇입니까?파이썬 클래스를 사용한 그래프 탐색

class vertex: 
    connections=[] 

    def __init__(self,na): 
     self.name=na 

    def __repr__(self): 
     return self.name 

    def display(self): 
     return self.name+' is linked with '+str(self.connections) 

def link(v1,v2): 
    print('linking',v1,v2) 

    v1.connections.append(v2) 
    v2.connections.append(v1) 

a=vertex('a') 
b=vertex('b') 

link(a,b) 

print(a.display()) 

출력 :

linking a b 
a is linked with [b, a] 

예상 출력 : 그래서 모든 인스턴스에서 공유

linking a b 
a is linked with [b] 
+1

[NetworkX] (https://networkx.github.io/) – tmr232

답변

2

연결 클래스 변수이기 때문에. 대신 __init__에 정의하십시오.

class vertex: 
    def __init__(self, na): 
     self.name = na 
     self.connections = []