Я хочу создать классы для следующей структуры графа:Как определить структуру рекурсивного графа в Python без циклического импорта?
- график представляет собой список graph_nodes
- graph_node объект с собственности graph_data в
- graph_data является объектом с значение «value» , которое может быть либо примитивным, либо графиком.
Это вызывает циклический импорт, так как объект graph_data должен импортировать объект графика. Есть ли лучший способ структурировать эту структуру данных? Очевидно, это очень орошаемый пример, но я думаю, что это ключевая проблема с моим кодом.
Вот пример кругового импорта:
#file main.py:
from graph import graph
myGraph = graph()
#file graph.py
import graph_node
class graph:
graph_nodes = []
def __init__(self, graph_nodes=None):
if graph_nodes == None:
self.graph_nodes = graph_nodes
else:
for i in range(5):
self.graph_nodes.append(graph_node.graph_node())
#file graph_node.py
import graph_node_data
class graph_node:
graph_data = None
def __init__(self):
self.graph_data = graph_node_data.graph_node_data()
#file graph_node_data.py
import graph
class graph_node_data:
value = None
def __init__(self):
self.value = graph.graph(graph_nodes = None)
Вот график, иллюстрирующий, где эта структура может быть полезной.
Почему вам нужно разделять 'graph_node' и' graph_node_data' на два класса/файлы? выглядит для меня чрезмерной инженерией. – alfasin
Это не требуется, но приятно сохранить структуру графика в более сложном коде. Все еще есть проблема с круговой проблемой в любом случае – CamJohnson26
В файле 'file graph.py' вы импортируете' graph_node', но вы его не используете;) – alfasin