【问题标题】:python class id蟒蛇类ID
【发布时间】:2012-12-12 23:02:11
【问题描述】:

我为一个带有 id 的类寻找一个不错的实现。我的问题是,我不知道指向其他对象的好解决方案。我的代码将如下所示:

class node(object):
    counter = itertools.count().next
    def __init__(self)
        self.id = node.counter
        self.parent = ...
        self.children = ...
        self.neighbour = ...

我想引用其他节点,例如 self.parent = node[id] - 类似于列表

编辑:所以,由于有很多混乱,我想具体说明我的问题。 你可以想象节点是一个立方体,里面有立方体,并且(可能)在一个立方体内。所以子立方体也是我想在课堂上引用的立方体。 所以我的主要想法是把它组织成一棵树。

edit2:不,我不是在谈论二叉树。最后我想做这样的事情:

node[4].children[0].children[2].neighbour[3].parent

【问题讨论】:

  • 这是完全可行的,但不是很理智。
  • 你能提供更多关于这棵树的信息吗?它应该遵循一定的结构吗?是二进制的,还是孩子的数量没有确定?
  • @IgnacioVazquez-Abrams 从 java 的角度来看。我也想听听 python 是如何做到这一点的。
  • Java 甚至无法执行您的要求,因为您无法覆盖类的索引。
  • @IgnacioVazquez-Abrams 我不是 OP :p 当然 Java 可以引用节点类中的其他节点。你是不是把他的问题解释得太字面意思了?

标签: python class tree


【解决方案1】:

我仍然无法理解您的问题,但__*item__() 方法定义了 Python 中序列和映射的各种索引操作。

【讨论】:

    【解决方案2】:

    Python 是一种动态语言,因此属性可以与任何类型绑定。

    class node( object ):
        def __init__( self, data, left, right ):
            self.data = data
            self.left = left
            self.right = right
    

    Here's 在 python 中使用节点类的有序树的一个很好的例子。

    【讨论】:

    • 不,我不是在谈论二叉树。最后我想做这样的事情:node[4].children[0].children[2].neighbour[3].parent
    • 我知道你不是。我是说你可以使用这些信息来创建你想要的任何结构。这将允许您以您想要的方式链接引用。但是括号 [X] 仍然是一个奇怪的符号。也许将节点存储在节点类中的列表中。
    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 2010-10-21
    • 2016-05-28
    • 2014-08-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多