Python: Classe

From Wiki Cours
Revision as of 10:19, 1 September 2015 by Wiki-cours (talk | contribs)
Jump to navigation Jump to search

<--Sommaire

Déclaration

Une classe définit un nouveau 'type' de donnée. Ce type comporte un nom qui définit un espace de nommage à l'intérieur de son bloc de définition. Ce type peut contenir des 'attributs' ou 'membres' (pour les variables) et des 'méthodes' (pour les fonctions).

La syntaxe pour déclarer une classe est la suivante

class A:                      # déclaration du nom
    """première classe"""     # documentation
    data = 2                  # attribut
dir(A)

Une classe peut déjà permettre de structurer les données. On parle 'd'encapsulation des données'. La fonction dir() permet de faire afficher le contenu de la classe. Pour accéder aux membres de la classe, il faut utiliser l'opérateur .

print A.data

Une fois une classe déclarée, contrairement aux langages à typage statique, il est toujours possible en Python de déclarer de nouveaux attributs.

A.b = "blabla"
dir(A)

On voit que l'attribut 'b' a été rajouté à la déclaration de la classe.

En Python, 'tout est objet', les types de base, les fonctions, les modules, etc... En appliquant dir() sur n'importe quel objet ou nom, on peut voir ses attributs et ses méthodes.

Instantiation

Une classe est utile pour créer des 'objets' ou 'instances' qui sont des variables définies avec la classe créée. La déclaration, ou instantiation, suit la même syntaxe que pour les types habituellement rencontrés, avec les parenthèses pour appeler la méthode qui crée l'objet (voir ci-après):

a = A() # l'objet a est créé avec le type A
print a.data
a.data = 4322
print a.data, A.data
A.data = -2
print a.data, A.data

En python, les objets et la classe elle-même sont des objets. On peut modifier indépendamment le contenu de chacun comme dans l'exemple ci-dessus. On accède aux membres des objets avec l'opérateur ..

Déclaration des méthodes

La déclaration des méthodes se fait le plus souvent à l'intérieur du corps de déclaration de la classe. Le mot-clé self fait référence à l'instance qui sera créée. Ainsi, 'self.data' correspond à l'attribut de la classe. Il est nécessaire de l'utiliser car si l'on écrit 'data' seul cela correspondrait à une variable locale de la fonction. De même, self' doit toujours apparaître en premier argument des méthodes pour que celles-ci puissent être appelées par les instances de la classe. Typiquement, on aura donc les déclarations:

class A:
    data = 0
    def __init__(self,d=1):
        self.data = d
    def change(self):
        self.data += 2
    def multiplier(self,n):
        for i in range(n):
            self.change()


Héritage