Session du 10 juin 2025 à 21h00
TOSA & Certifications
Programmation Orientée Objet (POO)
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Comprendre getters et setters en Python
Apprenez à manipuler les getters et setters en Python à travers un exemple concret de classe Employé, avec gestion d’attributs et génération automatique d’email.
00:00:00 :Cela y est, je vous laisse vos bêtises, ça reste dans l'adresse de la liste.Bon, on va commencer.Déjà, bonjour à tous, bonsoir à tous.
00:00:11 :Ce soir, avec plus de 15 jours de retard,comme nous l'avait suggéré Caroline, on va se concentrer sur les getter et les setter.Deux mots comme ça qui, surtout pour ceux qui ne sont pas forcément très avancés en programmation,peuvent paraître un peu barbares ou paraître être des concepts très abstraits de Python.
00:00:37 :Vous allez voir qu'il n'y en est rien, c'est très très simple.Et vous verrez que dans Python, techniquement, on ne va pas avoir de concept de getter et de settercomme on peut le retrouver dans beaucoup d'autres langages de programmation.
00:00:55 :On va être vraiment sur un système qui va simuler ces fonctions de getter et de setter.Alors, je vais vous partager l'écran.Déjà, on va commencer par un petit réglage.
00:01:23 :Non, ce n'est pas ça.C'est ce que je suis en train d'essayer de régler, justement.Non.Non, ce n'est pas ça.Qu'est-ce qu'il faut ?
00:02:06 :Je pense que tu peux faire contrôle plus.Voilà.Commande plus.C'est ce que j'essaye depuis tout à l'heure.Ah, mais c'est PyCharm.Oui.Je suis passé sur PyCharm parce qu'en fait, à chaque fois, je me retrouve fait avec Visual Studio Code et avec le commande.
00:02:40 :Contrôle, commande, égal.Voilà. J'ai trouvé une autre solution.Comme ça, je pense que c'est bon.Oui, merci. C'est bon pour moi.Oui, oui, c'est bon.
00:02:52 :Ok. Impeccable.Ok. Alors, pour notre travail, on va revenir au cœur du sujet.On va déjà commencer par un petit truc assez simple.Alors, on va faire une première...
00:03:03 :On va d'abord commencer par quelle classe, d'accord ?Que je vais appeler...Employé.Voilà.Alors, d'abord, pour faire une classe, on va faire le Unit.
00:03:21 :Alors, pour ceux qui ne sont pas encore là, le Unit, c'est ce qui va permettre, lorsqu'on va créer un objet à partir de cette classe,de créer un objet qui correspond à la classe Employee.
00:03:34 :Alors, on va commencer avec le prénom et le nom.Quelque chose de relativement simple.Ok.Pour créer un attribut qui correspond, on fait le self.prénom.
00:03:53 :Oui, je sais, j'ai évité Visual Studio Code pour éviter l'autocomplétion,mais je m'aperçois que dans PyCharm, j'ai aussi l'autocomplétion,et je suis en train de me fatiguer un petit peu.
00:04:03 :Mais bon, passons.Alors, hop, c'est le prénom, voilà.Donc, là, juste avec ça, j'ai créé mon employé en lui donnant un nom et un prénom.
00:04:17 :Donc, si je fais ça, par exemple, je vais la faire Employee1.Voilà.C'est égal à Employee, on va être extrêmement virginal, on va l'appeler Bernard.
00:04:35 :Pour ceux qui ont l'arêt.Hop, miné.Hop, voilà.Et là, j'ai mon employé qui est créé.Et si je fais print Employee1, tout court, normalement, ça devrait le faire.
00:04:58 :Tac, j'exécute.Hop, il m'a bien créé.On voit ici, alors c'est un peu petit, on va essayer de monter ça, voilà.On voit bien ici qu'il m'a créé un objet Employee, d'accord.
00:05:11 :Cet objet Employee, il a deux attributs, le prénom et le nom.Hop, on va faire le mieux.Maintenant, si j'apprime les attributs en faisant un appel comme ça aux différents attributs,on voit bien qu'il me renvoie bien le prénom Bernard et le nom de sa ligne.
00:05:30 :Ok ?Maintenant, on est dans le cadre d'une entrepriseet on sait qu'on va systématiquement associer un mail à chaque employé.On va utiliser la formule magique habituelle qu'on trouve dans beaucoup d'entreprises,à savoir le fameux nom-prénom.
00:05:52 :Donc, on va dire qu'automatiquement, on va créer l'email de l'employé.Et on va dire que l'email va être égal à...Nom.Ok.Plus...Point.Ça sera plus visible.
00:06:12 :Plus...Prénom.Attends, je vais éviter les mots.L'entreprise.Point com.Ok ?Donc là, si je veux afficher le prénom de mon employé,et après, mettons que je veux afficher l'email.
00:06:36 :Ok.Jusque là, normalement, tout va bien.J'ai bien le prénom de mon employé qui s'est affiché et son email.D'accord ?Maintenant, je veux avoir une méthodequi va me permettre d'afficher mon employé.
00:07:05 :Alors, d'être affiché employé, c'est très simple.Vous le découvrirez plus tard,mais pour ceux qui n'en sont pas encore là,quand vous devez définir une fonction,définir un nom de classe ou ainsi de suite,essayez d'être toujours le plus explicite possible.
00:07:24 :Ça vous évitera, quand vous revenez sur votre programme,de devoir essayer de comprendrepourquoi vous avez appelé votre fonction Goldoraket ce que fait votre fonction Goldorak.
00:07:34 :D'accord ?Donc là, il faut toujours être le plus clair possible.Et je vais prendre...Return.Voilà.On va faire comme ça.Et on va dire...
00:07:53 :Self...Self.Et non.Non, voilà. Comme ça, ça me va très bien.OK ?Et maintenant, si je fais...Afficher employé.OK, méthode.Si je lance...
00:08:15 :OK, tout va bien.Maintenant,je m'aperçois qu'en fait,je me suis trompé.Mon employé, il s'appelait...Enfin Bernard, mais Jean.Et...Je vais dire queemployé...
00:08:34 :Il faut un prénom.Du coup,je me suis trompé.Eh bien, il s'appelle Jean.OK ?Et là, qu'est-ce qui se passe ?On va regarder.
00:08:49 :Ah, alors.Voilà.Quand je demande d'afficher le prénom avant de le changer,c'est bien Bernard, pas de souci.Mais,quand j'affiche l'email,il ne m'a pas fait l'update.
00:09:05 :D'accord ?Il ne m'a pas mis mon email à jour.Donc ça, c'est normal.C'est typique des objets et des classes.C'est-à-dire que lorsque j'ai initialisé ma classe,à savoir sur la ligne 11,j'ai donné des valeurs.
00:09:20 :Et comme l'email s'est créédirectement ici,eh bien là, du coup,ça ne s'est pas remis à jourparce que j'avais changé de prénom.D'accord ?
00:09:32 :Donc, l'autre solution,c'est que je vaissupprimer cette affectation-là.Je vais garder ça pour éviter d'avoirquelque chose à reprendre.Voilà.Et,plutôt queje l'appelle email,je vais créer une méthode à la placepour créer mon email.
00:10:00 :D'accord ?Basiquement,ça revient plus ou moins au mêmeque ce que j'avais fait au préalable.C'est-à-dire, à savoir,utiliserle nom et le prénom.
00:10:14 :Ok ?Voilà.Et créer l'email comme je l'avais faittout à l'heure dans les units.Maintenant, si je fais ça,qu'est-ce qui se passe ?
00:10:32 :Ah, j'ai une erreur.Pourquoi ?Parce que tout simplement, maintenant que l'email,je l'ai créé en méthode,pour que ça fonctionne, il faudrait que je fasse comme ça.
00:10:42 :Puisqu'il s'agit d'une méthode, maintenant, il faut que je mette les parenthèses.Et là, si je relance,tout se passe bien, mais ça fait l'ennemi.Alors, il n'y a à ce momentpas trop de soucis.
00:10:54 :Le problème, c'est que là, on est sur un scriptqui fait quelques lignes,et si j'ai déjà utilisé cette classe-làà de multiples reprisesau travers de mon script ou d'un programmequi comporte plusieurs scripts,et queje veux faire cette modification pour la définitionde l'email parce que je me suis aperçu,
00:11:12 :ça faisait peut-être 6 mois que je travaillesur mon programme, c'est la première fois que j'ai un problèmeavec le prénom, et queje me suis aperçu que finalement,si je veux changer de prénom,ça colle pas pour l'email, c'est pas top.
00:11:24 :Il va falloir que je reprennetous mes scripts,tout mon programme, pour aller rajouterdeux parenthèses après emailà chaque fois que l'email est utilisé.
00:11:34 :Donc, vous conseillez bien que c'est déjàtrès fastidieux.Et en plus,ça va nous poser un petitproblème parce qu'on risque de passer à côtéde certaines fonctions, on va avoir des bugs récurrents dans le programme.
00:11:46 :La solution la plus simplepour ça, c'est de transformer l'emailen unletter. Donc,pour faire ça en Python, qu'est-ce qu'on va faire ?On va utiliserun décorateur. Alors,
00:12:02 :pour ceux qui ne savent pas, un décorateur,il y en a certains qui sontcréés dans Python,vous pouvez créer les vôtres, on a fait un mentoratsur ça il y a un ou deux mois,je crois, peut-être un peu plus.
00:12:14 :Je vous invite à aller jeter un oeil.C'est tout simplementun mot-clé, comme je viens de le mettre là,donc addProperty,qui va permettre de prendreune méthode,de l'insérer dans une autre méthode,etde transformer le résultat.
00:12:32 :Là,l'essai principal de addProperty,c'est de transformerla méthodeau-dessus de laquelle il est mis,en unattribut. C'est-à-dire qu'on n'est plus réellement sur une fonction,
00:12:46 :mais on est sur un attribut.Et là, si je relancema fonction,tout remarche comme tout à l'heure.J'ai plus besoin de mettre mes parenthèsesau niveau des emails.
00:12:58 :Ok ?Alors, est-ce que c'est à peu près bonpour tout le monde jusque-là ?Oui.Oui.Alors, je ne vais pas repréciser,mais si vous avez des questions, n'hésitez pasà m'interrompre.
00:13:16 :Ne me laissez pas partir loin devant,et je vous rends compte que vous êtescomplètement perdus, que vous ne voyez même plus mon dossard.D'accord ?
00:13:24 :Ensuite,maintenant,là,j'ai créé moncréateur. Maintenant,si je veux modifier l'email,par exemple,si je veux mettrejuste ici,que finalement,je veux dire que mon emailmaintenant, je veux mettreun email personnalisé, par exemple,on va imaginer quenotre fameux Bernard Milleta décidé de prendre un compte
00:14:02 :chez Gmail. Allez, tant pis.Hop là.Et qu'on crée une fonction qui luipermette de modifier son email.Donc, il va modifier la valeur de Email.
00:14:12 :Et que je metsque maintenant, c'estBernard.MilletatGmail.Allez, tant pis, on fera un peu de pub à l'international ce soir.Ce n'est pas bien grave.
00:14:28 :Là, si je lance,ah, il y a un problème.Parce qu'il me ditque la propriété Emailde la classe Employern'a pas de setter.
00:14:40 :C'est-à-dire que c'est un attribut,mais je ne peux pas en modifier la valeur.Comme je l'ai fait aux utopiesavec très long. D'accord ?Alors, pour ça, hop, attention.
00:14:52 :Comment on va faire ?Eh bien, pour créer le setter,il faut déjà qu'il y ait un getter de créé.Le getter, pour Email, on l'a créé.
00:15:00 :Il est ici, avec la propriété, ainsi de suite.Eh bien, pour créer un setter,mon getter va devenirOh, le vieil trou de mémoire.Un décorateur, voilà.
00:15:22 :Excusez-moi.J'ai eu un blanc, je ne sais pas ce que c'est.Donc, pour créer mon setter,ce que je vais faire, c'est que je vais utiliser Email.setter.
00:15:30 :D'accord ?Et là, du coup, je vais créer une fonction.Je l'appelle de la même manièreque ma fonction précédente.Et on va dire Email.
00:15:50 :Et là, on va dire self.email.Egal Email.Et maintenant, on va tenter de relancer tout ça.On va voir ce que ça donne.C'est parce que, voilà.
00:16:20 :J'aurais dû faire ça.Autant pour moi, j'aurais dû créer la valeur ici.Comme ça, voilà.Sinon, si je n'ai pas créé mon attribut avant,là, on y arrive.
00:16:42 :Et je vais la créer ici, en vide.Et là, normalement, ça devrait être bon.Alors, qu'est-ce qu'on va faire ?Ce n'est pas une référence circulaireou est-ce que tu essaies de faire un setteravec le même nom ?
00:17:02 :Alors, normalement,ça marche comme ça.Mais à l'intérieur de Propertypuis Setter, il faudraitune variable qui serait interne.Non ?Ouais, peut-être.Ça va ?
00:17:20 :Non, non, mais je veux direque ça serait un self.Self.UnderscoreEmail, par exemple.Donc, puis le nom que tu veux.Non, alors ça,ça n'a pas de...
00:17:34 :Je vois ce que tu veux dire.Mais dans Python, ça n'existe pas, ça, en fait.C'est juste une...Tu parles de ça, en fait.Oui.
00:17:44 :Ouais. Alors ça, dans Python, en fait,ça n'a pas de...Les variables, avec un simple underscore,c'est juste un titre allocatif.Oui, mais c'est ça aussi.
00:17:54 :Alors, à moins que...Si je fais ça,c'est peut-être que ça ira mieux.C'est du texte.Non. Ah ouais, c'est un problèmed'orientation, effectivement.Euh...
00:18:14 :Ok.Et si je fais ça ?Voilà. À mon avis,ça a mieux marché comme ça.Je pense que c'est le fait que le pronom,les trucs email à chaque fois.
00:18:34 :Voilà.C'est un simple problème de récursion à causer.Voilà.Donc.Là, ok.Check.Donc là, j'ai plus d'erreurs,mais sauf que du coup, il ne l'a pas modifié.
00:18:54 :Pourquoi ?Ah oui, parce que...Je remodifie là, en fait.Je ne remodifie pas ici.En fait, il aurait falluque je fasse...Ouais, vas-y, Baptiste.
00:19:08 :Euh...Le décorateurProperty,c'est pour retourner une propriété,c'est ça ? Ouais, c'est pourtransformer une méthode en propriété.Euh...Plus...Ouais.Est-ce que, du coup,Ah, attends.
00:19:32 :J'ai peut-être mon idée.Alors. Je sais commenton va pouvoir faire pour créer ce que je voulais.Alors.On va créer ça comme ça.Et là, ça devrait aller dix fois mieux.
00:19:44 :Voilà.Je peux faire ce que je voulais.C'est pas très important,mais on va arriver au bout de l'exercice.C'est quand même ça, le principal.
00:19:54 :Voilà. On va dire queje vais créer mon domaine là,et que je vais ajouter mon seul domaine ici.Voilà.Voilà.Ok.Alors, maintenant.Hop.
00:20:12 :Euh...Tac, tac, tac.Voilà.Alors, on va partirdu principe,parce que là, il va falloirprendre une certaine abstraction pour arriver au bout,qu'on imposeque forcément, on aeuh...
00:20:32 :Le récit mail va être entré sous cette forme là.D'accord ?Alors, pour obtenir le domaine, qu'est-ce qu'on va faire ?On va prendre mail.
00:20:40 :Non.self.domaineVoilà. C'est là que j'aifait le truc.On va dire que c'est mail.On va faire un split avec l'arrow base.D'accord ?
00:20:54 :On va prendre la dernière valeur.Et avant, on va ajouterpour récupérerl'arrow base, comme on a fait dans le...On va ajouter dessus.Voilà.
00:21:06 :Comme ceci. D'accord ?Donc là, on est bien d'accord. Si je splitcette valeur là, que je coupeau niveau de l'arrow base, je vais récupérer jmail.com
00:21:14 :Je le rajoute à arrow baseet je vais bien remplacer mon domaine ici.D'accord ?Là,euh...Si euh...On va...C'est un peu compliquémais on va y arriver.
00:21:32 :self.prénomOKest égal àeuh...tac tac tactacEuh...Donc je split d'abord mon mailpar l'arrow baseet ensuite je le splitpar le .
00:21:54 :Et je prends la première valeur.Et pour le nom...Bon, c'est pas super proprece que je suis en train de vous faire, mais c'est pour vous montrerun peu l'idée.
00:22:04 :Je vais splitter et garder le 0.Et là,je splitavec le .Et je garde le 1.OKEt self.Et return.Euh...tac tac tacEuh...
00:22:30 :Comme ça.Voilà.Et là, si on lance normalementVoilà.Notre email a changé.Voilà.Donc le setter, c'est pour modifier la valeur.D'accord ?Et là, comme j'ai changé les valeurs,si je refais encore aprèsEuh...
00:22:54 :Je vais changer le prénom à nouveau.Je vais remettrenotre fameux Jean.Et je vaisreprinter l'email pour que vous voyez la différence.J'ai pas besoin d'apprendre à ré.
00:23:10 :Voilà.OKEt je relance.Là, vous voyez,on a bien le changement qui s'est fait.Donc, là, avec legetter et le setter, on arrive effectivementà recréerEuh...
00:23:32 :un nouvel attribut.Et à le remodifier.D'accord ?Donc ça, c'est tout l'intérêt des getterset des setters, en fait.Vous allez pas forcément partirde base sur un duogetter-setter quand vous allez faire vos classes.
00:23:48 :L'idée,c'est vraiment d'essayer,quand on conçoit un programme,une classe ou un objet,d'essayer de le définir au maximum.Montrez le jeu.Pour ceux qui ont déjàvu la PO un petit peu avancéeou qui vont la voir,vous découvrirez que quand on ades variantes de classes,généralement, on va plutôt utiliser l'héritage.
00:24:12 :On ne va pastrop dans le détail, maislà, typiquement, dans notre exemple,on aurait crééune classe avec le nom-prénomet après, pourdifférents types d'objets,par exemple, pour l'e-mail,on aurait crééune classe e-mail qui hérited'employé, ce qui permet de récupérerles fonctions de nom-prénomen existence et
00:24:38 :de travailler avec e-mailuniquement sur cet objet-là.Et d'avoir un simple objet e-mailqui travaille avec le prénom et le nom.Et ainsi de suite.
00:24:48 :D'accord ?Maintenant,là où il est bon de connaître les dateurs et les dateurs,c'est que, justement,quand vous allez avoir créé votre programme depuis un petit moment,bien qu'onessaye de vous conseillerde toujours essayer d'anticiper au maximumles choses et d'anticiper les fonctionnalités,à un moment donné,
00:25:08 :vous allez fatalement vous retrouverdans le cas où vous devezsoit créer une nouvelle variableet soit permettreque cette variable soit modifiable.Et là, comme vous le voyez,notamment par rapport à l'e-mail,si là j'ai écritune dizaine de lignes,imaginez si je suis sur un scriptqui fait des centaines de lignes
00:25:30 :et qui a une dizaine de scripts comme ça,et que je dois aller retrouver à chaque fois l'e-mailpour rajouter les parenthèsespour pouvoir continuer à manipuler mon objete-mail correctementque je n'ai pas de bug,le travail va être très vite fastidieux.
00:25:44 :Donc là,il est intéressant de transformerjustement votre e-mail qu'on avait au tout débutdont je vous rappelle le self-e-mail qu'on avait icien un getterpourqu'il génère automatiquement,voire d'ajouter un settersi jamaison veut le modifier.
Aucune occurrence trouvée pour « ».