我想创建一个简单的图表类,我存储节点,每个节点存储其邻居。
但是当我进行intrate时,我只返回<class '__main__.Node'>
个对象,我可以访问Node类的任何方法(如__str__
)。
class Node(object):
def __init__(self, Node_arr=None):
self.name = None
if Node_arr == None:
Node_arr = []
self.__Node_arr = Node_arr
def add_vertex(self, node):
#if node not in self.__Node_arr:
self.__Node_arr.append(Node)
def get_nachbarn(self):
return self.__Node_arr
def set_name(self, name):
self.name = name
def __str__(self):
return self.name
class Graph2(object):
def __init__(self, n, Node_arr=None):
if Node_arr == None:
Node_arr = []
for i in range(n):
c1 = Node()
c1.set_name(str(i))
Node_arr.append(c1)
self.__Node_arr = Node_arr
def add_vertex(self, node):
self.__Node_arr.append(node)
def add_edge(self, edge1, edge2):
v1 = self.__Node_arr[edge1]
v2 = self.__Node_arr[edge2]
v1.add_vertex(v2)
v2.add_vertex(v1)
def __str__(self):
res = ""
for k in self.__Node_arr:
res += "Kanten von "+str(k) + " nach\n"
for j in k.get_nachbarn():
res += str(j)+" "
res += "\n"
return res
if __name__ == "__main__":
g = Graph2(5)
g.add_edge(0,1)
print(g)
输出是:
Kanten von 0 nach
<class '__main__.Node'>
Kanten von 1 nach
<class '__main__.Node'>
Kanten von 2 nach
Kanten von 3 nach
Kanten von 4 nach
但应该是:
Kanten von 0 nach
1
Kanten von 1 nach
0
Kanten von 2 nach
Kanten von 3 nach
Kanten von 4 nach
答案 0 :(得分:1)
class Node(object):
def add_vertex(self, node):
#if node not in self.__Node_arr:
self.__Node_arr.append(Node)
您正在保存课程Node
,而不是其实例node
。