Python继承从某些边缘显示节点

时间:2016-07-03 11:16:38

标签: python oop

我尝试构建这些类,我需要显示边缘的每个节点。 (节点的状态只是数字1或0(访问/未访问))。

我必须构建一个图形(无向)并管理所有边缘(显示边缘,改变边缘节点的状态等)。

问题出在方法getNode1()

上的类Edge中
class Nodee:

   def __init__(self, node, state):
      self.node = node
      self.state = state

   def getNode(self):
         return self.node

   def getStateNode(self):
         return self.state


class Edge(Nodee):

      def __init__(self, node1, node2):
         Nodee.__init__(self,node1,0)
         Nodee.__init__(self,node2,0)

      def getNode1(self):
         return self.node1.getNode()

      def getStateNode1(self):
         return self.node1.getStateNode()

      def getNode2(self):
         return self.node2.getNode()

      def getStateNode2(self):
         return self.node2.getStateNode()

def main():

      graf = []
      node1  = Nodee(2,0)
      node2  = Nodee(1,0)

      graf.append(Edge(node1,node2))
      print(str(node1.getNode()))
      print(str(graf[0].getNode1()))

1 个答案:

答案 0 :(得分:0)

我相信你不明白继承是什么。

您的代码没有node1和node2实例变量。 这是主要问题。 如果以下代码满足您的需求,则不需要任何继承。

class Node(object):
    def __init__(self, node, state):
        self.node = node
        self.state = state

    def get_node(self):
        return self.node

    def get_state_node(self):
        return self.state


class Edge(object):

    def __init__(self, node1, node2):
        self.nodes = []
        self.nodes.append(node1)
        self.nodes.append(node2)

    def get_node(self, index):
        return self.nodes[index].get_node()

    def get_state_node(self, index):
        return self.nodes[index].get_state_node()


def main():
    graf = []
    node1  = Node(2,0)
    node2  = Node(1,0)

    graf.append(Edge(node1,node2))
    print(node1.get_node())
    print(graf[0].get_node(0))


if __name__ == '__main__':
    main()
  

如果您在python中编写代码,那么有一些约定,请查看PEP8