我试着用OOP创建一个图形。我得到一个错误的AttributeError: type object 'Graph' has no attribute 'edges_list',我不明白为什么。下面是代码:我希望得到一些帮助。我确实设置了一个名为edges_list的图的属性。为什么它找不到?
import numpy as np
import networkx as nx
class Graph:
def __init__(self, edges_file):
self.node_set = set() #Set of nodes by name
self.edges_list = []
self.edges_file = edges_file
self.generate_graph(edges_file)
class Node:
def __init__(self, name):
self.name = name
self.metal = -1
class Edge:
def __init__(self, name):
self.name = name
self.side1 = 0
self.side2 = 0
self.resistance = 0
def generate_graph(self, edges_file):
G = nx.Graph()
G.add_nodes_from(range(0,856284))
nodes_file = open('nodes.csv','r')
nodes_file_content = nodes_file.readlines()
with open('edges.csv', 'r') as edges_file:
next(edges_file)
for line in edges_file:
splitted_line = line.split(",")
edge_name = splitted_line[0]
node_name = splitted_line[1]
neighbor_name = splitted_line[2]
new_edge = self.Edge(edge_name)
new_edge.side1 = splitted_line[1]
new_edge.side2 = splitted_line[2]
self.edges_list.append(new_edge.name)
self.node_set.add(self.Node(node_name).name)
self.node_set.add(self.Node(neighbor_name).name)
edges_file.close()
nodes_file.close()
if __name__ == '__main__':
graph = Graph('edges.csv')
Graph.generate_graph(Graph,'edges.csv')发布于 2022-08-23 06:27:45
如果您添加了edges.csv和nodes.csv文件,这将是有帮助的。如果没有它,它更像是一个疯狂的建议,看起来其中一个问题出现在您的第二行:Graph.generate_graph(Graph,'edges.csv')
相反,尝试使用:graph.generate_graph(r'.\edges.csv')运行代码
另外,在def generate_graph中,这一行是错误的:
with open('edges.csv', 'r') as edges_file这是因为您在一个还不知道文件名的函数中。您想要编写它:当然,with open(edges_file, 'r') as file:,根据需要修改其余的代码.
希望这能有所帮助!祝好运
https://stackoverflow.com/questions/73453876
复制相似问题