2012-02-15 57 views
-3

有一类如下:类“超级”可变

class N: 
    def __init__(self, node_id): 
     self.id = node_id  # id (as an integer for example) 
     self.super = 0 
     self.color = 0 

它是关于创建节点。正如你所看到的,有一个属性,超级。我想调用超级节点的颜色。

我试图执行:

node.color = node.super.color 

,但是,这是错误的执行。你有什么想法如何获得其他节点的信息?

+4

'self.super'设置为'0',所以它是一个整数,而整数没有的颜色(至少对我们之间的非联觉)。我似乎失去了一些东西... – 2012-02-15 17:48:07

+0

@SvenMarnach是非常正确的。另外,不要说“这是错误的实现”,你应该粘贴实际的错误信息。 – 2012-02-15 17:49:35

+0

你甚至指的是什么超级节点? N类是否应该能够在其self.super属性中存储对另一个节点实例的引用? – jdi 2012-02-15 17:53:16

回答

4

您需要明确地将父节点或至少它的颜色传递给类初始化函数 - simplist节点类无法“猜测”它如何与其他节点对象连接。

一条路可走的是:

class N(object): 
    def __init__(self, node_id, parent_node): 
     self.id = node_ide 
     self.parent = parent_node 
     self.color = 0 
    # and you canget parentnode color with self.node.color 
+1

这看起来很适合我。它的缺失部分来自我的问题,即OP是否想存储对另一个节点实例 – jdi 2012-02-15 17:54:50

+2

'self.parent.color'的引用,当然? – 2012-02-15 17:56:08

+0

@DanielRoseman - 也是node_ide上的错字...并且不叫他雪莉 – jdi 2012-02-15 17:59:00