Appel des méthodes avec assignation obligatoire.
Bonjour,
-Comment appelle-t-on ces méthodes qui doivent impérativement être assignées dans une variable (ou son contraire) pour le bon fonctionnement du code?
-Comme la méthode .sort() par exemple qui ne fonctionne pas avec l'assignation et retourne "None".
Jusqu'ici je suis déjà tombée dans le panneau plein de fois, mis à part tester aveuglément est-ce qu'il est possible de questionner cet état de fonction? Par exemple quelque chose qui est du même genre que .callable()
Merci
Bonjour Céline,
Bonne question, il n'y a pas de nom spécifique pour désigner ce comportement, la seule dénomination qui change c'est celle de fonction VS méthode (une méthode étant une fonction appartenant à un objet).
Il n'y a pas vraiment d'autres moyens que de tester / lire la documentation.
Cependant, il y a une raison pour laquelle des méthodes comme sort ou reverse ne retournent rien : parce qu'elles agissent sur un objet muable (un objet qu'on peut modifier).
Si tu fais :
>>> liste = [1, 3, 2, 3]
>>> liste.reverse()
reverse (tout comme sort) ne retournent rien car elles sont en mesure de modifier directement la liste en changeant l'ordre des éléments car une liste est un objet muable.
Ce n'est pas le cas par exemple des chaînes de caractères.
Tu peux donc en déduire qu'une méthode agissant sur une chaîne de caractères te retournera obligatoirement quelque chose et ne modifiera pas la chaîne en tant que tel, car c'est impossible (une chaîne de caractères étant immuable) :
>>> "bonjour".capitalize()
'Bonjour'
>>> "bonjour".upper()
'BONJOUR'
Je sais que ça peut être perturbant au début car tu as parfois plusieurs façons de faire, par exemple avec les listes et la fonction sorted qui elle ne trie pas directement la liste mais te retourne la liste triée.
L'avantage est que tu as le choix (et parfois c'est utile d'avoir ce choix !). Est-ce que tu souhaites modifier directement ta liste, ou garder ta liste d'origine intacte et récupérer la liste triée dans une autre liste ?
Avec la méthode sort VS la fonction sorted, tu peux choisir ce que tu veux :
>>> # Je souhaite garder ma liste d'origine intacte :
>>> liste = [2, 3, 4, 1, 2, 7]
>>> liste_triee = sorted(liste)
>>> liste
[2, 3, 4, 1, 2, 7]
>>> liste_triee
[1, 2, 2, 3, 4, 7]
>>> # Je souhaite modifier directement la liste et n'ait pas besoin de créer une nouvelle variable :
>>> liste.sort()
>>> liste
[1, 2, 2, 3, 4, 7]
Voilà, j'espère que c'est plus clair pour toi et que ça te permet de voir aussi l'avantage de toutes ces façons de faire même si j'imagine pour le moment ça te paraît plus pénible qu'autre chose ^^
Bonne continuation !
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte