首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在没有循环导入的情况下在Python中定义递归图结构?

如何在没有循环导入的情况下在Python中定义递归图结构?
EN

Stack Overflow用户
提问于 2017-02-22 17:11:46
回答 1查看 156关注 0票数 0

我想为以下图形结构设置类:

  • 图是graph_nodes的列表
  • graph_node是一个具有属性graph_data的对象。
  • graph_data是一个具有“值”属性的对象,它既可以是原语,也可以是图形。

这会导致循环导入,因为graph_data对象需要导入图形对象。是否有更好的方法来构造这种数据结构?显然,这是一个非常精减的示例,但我认为这是我的代码的关键问题。

下面是循环导入的一个示例:

代码语言:javascript
运行
复制
#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)

这里有一个图表,说明这种结构可能有用的地方。

EN

回答 1

Stack Overflow用户

发布于 2017-02-22 17:57:37

只要将代码合并到一个文件中,就可以正常运行:

代码语言:javascript
运行
复制
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())

class graph_node:
    graph_data = None

    def __init__(self):
        self.graph_data = graph_node_data.graph_node_data()

class graph_node_data:
    value = None

    def __init__(self):
        self.value = graph.graph(graph_nodes = None)

myGraph = graph()

如果确实需要将类保存在单独的文件中,则需要使用本地导入,即在函数中声明导入语句。

代码语言:javascript
运行
复制
def fn():
    import graph
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42398045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档