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 @@ + + + +
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'
+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 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.