Python est un paradigme orienté objet¶
cela signifie que toutes vos données sont des objets
entre autres choses chaque objet a un type
# en Python absolument toutes les données
# en mémoire sont des objets
# chaque objet possède (entre autres)
# un type
# un module
import math
# un nombre
x = 4 * math.pi
# une chaine
texte = "une chaine"
# une fonction
def fact(n):
return 1 if n <= 1 else n * fact(n-1)type(x)floattype(texte)strtype(fact)functiontype(math)moduleméthode = fonction attachée à un type¶
lorsqu’on appelle un méthode sur un objet,
la syntaxe est donc
objet.methode(parametre)ce qui se passe c’est que
on cherche la méthode à partir du type de
objeton trouve une fonction, et on l’appelle
avec en premier argument l’objet
appel de méthode illustré¶
chaine = "bonjour"
chaine'bonjour'# la recherche de 'capitalize'
# à partir de `chaine`
# trouve une fonction rangée
# dans le type `str`
la_methode = str.capitalize
la_methode<method 'capitalize' of 'str' objects># lorsqu'on écrit ceci
chaine.capitalize()'Bonjour'# c'est comme si on avait
# écrit
la_methode(chaine)'Bonjour'# si on passe des arguments
chaine.center(13, '-')'---bonjour---'# ils sont ajoutés après l'objet
str.center(chaine, 13, '-')'---bonjour---'à quoi ça sert ?¶
par rapport à un appel de fonction, 2 avantages
la résolution du nom de la méthode se fait à l’exécution
le même code se comporte différemment
sur des entrées de type différents
permet d’écrire du code plus générique
espaces de nom plus propres
pas besoin d’inventer des noms commestr_capitalize