Python继承显示来自某些边缘的节点

Python继承显示来自某些边缘的节点,python,oop,Python,Oop,我尝试构建这些类,需要显示边的每个节点。 (节点的状态仅为数字1或0(已访问/未访问)) 我必须构建一个图形(无向)并管理所有边(显示边、更改边的节点状态等) 问题出在方法getNode1()的类边缘 我相信你不明白什么是继承 您的代码没有node1和node2实例变量。 这是主要问题。 如果下面的代码涵盖了您的需求,那么您不需要任何继承 class Node(object): def __init__(self, node, state): self.node = no

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

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

问题出在方法getNode1()的类边缘


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

您的代码没有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编写代码,那么有一些约定,请参阅


“显示每个节点”是什么意思?是否要对象的字符串表示形式?为此,您可以实现
\uuu str\uu
函数。对不起,我错了,用print显示节点,比如print(graf[0].getNode1()),我无法理解您的意图。你需要更清楚地解释你的目标。在类中,像getNode1()这样的“Edge”方法不会从边缘给出node1。我不知道如何正确构建它(对不起,我的英语不好)。您的第二个类
Edge
没有任何node1实例变量。在初始化中,您需要执行self.node1=Nodee.\uuu初始化(self,node1,0)并对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()