list_of_nodes = list() list_of_edges = list() class node: def __init__(self, name=""): self.name = name def get_name(self): return self.name def set_name(self, new_name=""): if new_name != self.name: old_name = self.name self.name = new_name print("name of node {} changed to {}".format(old_name, new_name)) else: pass n1 = node("A") n2 = node("B") n3 = node("C") for n in [n1,n2,n3]: list_of_nodes.append(n) print(list_of_nodes) for n in list_of_nodes: print(n.get_name()) list_of_node_names = [x.get_name() for x in list_of_nodes] print(list_of_node_names) class edge: def __init__(self, nstart, nend): self.nstart = nstart self.nend = nend def __str__(self): s = self.nstart.get_name() e = self.nend.get_name() return "{} -> {}".format(s,e) e1 = edge(n1, n2) print(e1)