Attributs et méthodes
Cette section traite d’un sujet qu’on peut considérer comme avancé, surtout pour un TP d’initiation : les méthodes.
C’est tout-à-fait dispensable en théorie : les éléments traités dans l’introduction suffisent pour répondre à tous les problèmes d’algorithmique. Mais on peut difficilement s’intéresser à Python sans aborder le sujet : la plupart des petites choses qui rendent la programmation Python agréable (Python est réputé « piles incluses ») sont accessibles via les méthodes des types de base.
Attributs
Un attribut n’est rien d’autre qu’une valeur « portée » par un objet, à laquelle on accède par son nom (qui respecte les mêmes conventions que les noms de variables): si l’objet x a un attribut toto, on obtient la valeur de cet attribut en écrivant x.toto.
Par exemple, Python admet une représentation des nombres complexes sous la forme a+bj où a et b sont des nombres flottants: a est la partie réelle et b est la partie imaginaire. Si a est nul, on peut aussi écrire bj, par exemple 1j est ce qu’on noterait i en maths (attention: j tout seul, c’est un nom de variable).
Essayez:
Les parties réelles et imaginaires d’un complexe sont disponibles comme des attributs real et imag:
On aurait aussi bien pu faire:
1 print("Partie réelle de exp(iπ/4) = ",(e**x).real)
Méthodes
Une méthode est une fonction qui est « portée » par un objet, c’est-à-dire a priori par n’importe quelle valeur. Ce n’est en fait rien d’autre qu’un attribut, dont la valeur est une fonction.
On y accède donc par la syntaxe valeur.methode(arguments) : c’est presque comme un appel de fonction, sauf que c’est préfixé par une expression suivie d’un point.
Un exemple: toutes les chaînes de caractères ont des méthodes lower et upper, qui retournent une version respectivement minuscule et majuscule de la même chaîne.
1 print('Bonjour'.upper(),'Bonjour'.lower())
Ou encore, toutes les chaînes ont une méthode split qui prend un argument séparateur, et qui permet de découper la chaîne à chaque occurrence de séparateur, pour obtenir une liste de sous-chaînes.
1 tableau='nom\tprénom\tnote\nDuchamp\tMarcel\t12\nv. Gogh\tVincent\t16\nKoons\tJeff\t2'
2 print('Voilà le tableau')
3 print(tableau)
4 lignes=tableau.split('\n')
5 for i in range(1,len(lignes)):
6 ligne = lignes[i]
7 colonnes = ligne.split('\t')
8 print(colonnes[1],colonnes[0],'a eu la note',colonnes[2]
Aller plus loin
On peut trouver la liste des attributs et méthodes d’un objet avec la fonction dir. Mais il est certainement plus utile de consulter l’aide, lorsqu’elle est disponible…
Définir des objets avec attributs et méthodes demande d’aborder la programmation objet, ce dont on peut se dispenser dans un premier temps.
Il peut par contre être utile de voir un cas particulier: les modules.