UKOnline

Méthode

Maintenant qu'on est capables d'initialiser un objet et ses attributs, on va pouvoir s'intéresser aux fonctionnalités qui sont, pour rappel, représentées par des méthodes. Une méthode n'est rien de plus qu'une fonction qui s'applique sur un objet cible, spécifié lors de son appel.

Définition de méthode

Une méthode se définit dans une classe comme une fonction, avec comme particularité qu'elle doit accepter au moins un paramètre, dont le nom doit être self, et qui doit être le premier paramètre. Ce paramètre représente l'objet cible sur lequel la méthode est appelée. Il permet notamment d'avoir accès aux variables d'instance de l'objet.

Ajoutons, par exemple, une méthode setphonenumber à la classe Contact, qui permet de modifier le numéro de téléphone d'un contact :

La méthode setphonenumber reçoit simplement un numéro de téléphone en paramètre et écrase la valeur de la variable d'instance phonenumber avec cette nouvelle valeur reçue.

Appel de méthode

Pour appeler une méthode, il faut indiquer l'objet cible suivi de la méthode à appeler en utilisant l'opérateur d'appel (.). L'exemple suivant crée un objet de la classe Contact, sans préciser le numéro de téléphone, puis modifie ce dernier en appelant la méthode setphonenumber :

La première instruction print affiche $0$, c'est-à-dire la valeur à laquelle est initialisée la variable d'instance phonenumber par défaut. La seconde instruction print affiche $8293$, témoignant du fait que l'appel à la méthode setphonenumber a bien fait son travail :

0
8293

Plusieurs méthodes de même nom

Comme pour les constructeurs, on peut avoir plusieurs méthodes qui ont le même nom en utilisant les valeurs par défaut des paramètres. Définissons, par exemple, une méthode changename qui permet de changer le prénom et/ou le nom d'un contact :

On utilise la valeur spéciale None comme valeur par défaut pour les deux paramètres. Il s'agit d'une valeur spéciale dont la signification est justement l'absence de valeur. Dans le corps de la méthode, on modifie les variables d'instance pour le prénom et/ou le nom, si les valeurs des paramètres reçus sont différents de None. Voici différents appels que l'on peut faire sur un contact :

  • lurkin.changename('John', 'Doe') change le prénom et le nom du contact ;
  • lurkin.changename('John') change uniquement le prénom du contact ;
  • lurkin.changename(lastname='Doe') change uniquement le nom du contact.