diff --git a/Scripting/Python/Fonctions-Avancées.html b/Scripting/Python/Fonctions-Avancées.html new file mode 100644 index 0000000..1b19f33 --- /dev/null +++ b/Scripting/Python/Fonctions-Avancées.html @@ -0,0 +1,76 @@ + + +
Fichier:Python logo and wordmark.svg — Wikipédia
+

Le constructeur

+

Un constructeur est une méthode spéciale d'une classe qui permet de construire un objet, de lui donner des attributs.

+

Le nom de cette méthode est “ __init__ ” et prend en premier argument “ self ”, qui représente l'objet courant, qui est cours de création.

+

Exemple : je crée un constructeur permettant de définir une personne 

+
class People:
+    def __init__(self,firstname,lastname,age):
+        self.firstname = firstname
+        self.lastname  = lastname
+        self.age       = age
+

Notre fonction init demande 3 paramètres, “ self ” étant un paramètre spécial. 

+

Grâce à ce constructeur il ne reste qu'à créer des objets : 

+
>>> chuck = People("Chuck","Norris",81)
+

L'objet “chuck” a été créé, on peut désormais accéder à ses différents attributs, les lire et les modifier.

+
>>> chuck.firstname
+'Chuck'
+>>> chuck.firstname = "Chucky"
+>>> chuck.firstname
+'Chucky'
+

Le représentateur

+

Reprenons l'exemple précédent. Lorsque l'on souhaite afficher notre objet, la valeur retournée n'est pas tout à fait celle attendue.

+
>>> chuck
+<__main__.People object at 0x03C12820>
+

Nous allons donc utiliser un représentateur pour mettre en forme l'objet.

+

Cette méthode se définit “ __repr__ ”.

+
class People:
+    def __init__(self,firstname,lastname,age):
+        self.firstname = firstname
+        self.lastname  = lastname
+        self.age       = age
+
+    def __repr__(self):
+        return "Nom : %s , Prenom : %s , Age : %s" % (self.lastname, self.firstname, self.age)
+

 

+
>>> repr(chuck)
+'Nom : Norris , Prenom : Chuck , Age : 81'
+

Le décorateur

+

Le décorateur est une fonction permettant de modifier le comportement d'autres fonctions, évitant la répétition de code. Il est appelé par “ @nom_décoraeur ”.

+
def title_decorator(function):
+    def wrapper(*args, **kwargs):
+        print("*"*30)
+        print("-"*30)
+        function(*args, **kwargs)
+        print("-"*30)
+        print("*"*30)
+    return wrapper
+
+@title_decorator
+def title(titre):
+    print(titre)
+
+>>> titre = "Ceci est mon texte décoré"
+>>> title(titre)
+******************************
+------------------------------
+Ceci est mon texte décoré
+------------------------------
+******************************
+

Ce décorateur permet simplement de mettre en forme un titre. Mais le décorateur, critiqué pour son nom ne définissant pas assez clairement sa fonction, peut avoir bien d'autres usages.

+

Par exemple, dans le cadre du développement web, les décorateurs sont très utilisés. Typiquement, pour les pages nécessitant une authentification, le décorateur “ @login_required ” du framework Django est très utile.

+
from django.contrib.auth.decorators import login_required
+
+@login_required
+def my_page(request):
+    ...
+

Tout comme “ @login_required ”, beaucoup de décorateurs sont déjà développés, nécessitant un simple import.