#-*-coding:utf8-*- class Graphe: ''' Classe implementant toutes les fonctionnalites des graphes. ''' _sommets = None _aretes = None def __init__(self, sommets=[], aretes=[]): ''' Constructeur de la classe Graphe. ''' # On teste les variables aretes_set = [set(k) for k in aretes] try: self._test_variables(sommets, aretes_set) except ValueError,x: print "Erreur de valeur : " + str(x) # On fixe les valeurs des attributs self._sommets = sommets self._aretes = aretes_set def _test_variables(self, sommets, aretes): ''' Teste les parametres passes au constructeur. ''' # Tests sur les sommets assert isinstance(sommets, list) for k in sommets: try: assert isinstance(k, int) except AssertionError: raise ValueError("Les sommets sont entiers") # Tests sur les aretes assert isinstance(aretes, list) for arete in aretes: try: assert isinstance(arete, set) except: raise ValueError("Une arête est un ensemble") assert len(arete) == 2 # Boucle ? for j in arete: try: assert j in sommets # Aretes de sommets? except AssertionError: raise ValueError("Sommet inexistant") def ordre(self): ''' Renvoie l'ordre du graphe considéré, i.e. son nombre de sommets. ''' return len(self._sommets) def _get_sommets(self): return self._sommets def _set_sommets(self, sommets): self._sommets = sommets try: self._test_variables(sommets, self._aretes) except ValueError,x: print "Erreur de valeur : " + str(x) sommets = property(fget = _get_sommets, fset = _set_sommets, doc = "Accesseur aux sommets") if __name__ == '__main__': unGraphe = Graphe(sommets = [1,2,3], aretes = [(1,2),(1,3)]) print "Ordre du graphe :", unGraphe.ordre() print "Sommets :", unGraphe.sommets unGraphe.sommets = [2,3] print "Sommets :", unGraphe.sommets