Session du 19 novembre 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
Session de mentorat sur les dataclasses
Session de mentorat sur les dataclasses
00:00:00 :Ok, c'est parti.Bon alors déjà, bonsoir à ceux que je n'ai pas eu le temps de saluer,tant que je racontais ma life sur les codes, arguments et autres suites.
00:00:11 :Donc ce soir, c'est en fait le programme d'avril 16 qui s'est terminé un peu par la guérille.Donc on va continuer un petit peu dans la lignée de tout ce qu'on fait depuis le début,donc à savoir depuis mars-septembre, on a recommencé un petit tourautour de la programmation orientée objets et libère des variances.
00:00:31 :Alors pour mémoire, on a notamment parti des décorateurs pour les fonctions.On a basculé ensuite sur un petit exemple avec des décorateurs sur une base de...
00:00:49 :Excusez-moi, je trouve qu'il y en a un, un design pattern avec un registrepour montrer un petit peu à quel point on pouvait faire des choses complexes avec les décorateurs.
00:00:58 :La dernière fois qu'on s'est vu, je vous ai dit de parler des méthodes de classe et des méthodes spatiques.Donc on en parlait un petit peu à l'instant justement.
00:01:08 :Je vous invite, pour ceux qui n'étaient pas là ou qui en auraient besoin, à revenir voir la vidéo.Le point le plus important à retenir dans tout cela,parce que c'est une méthode de classe, une méthode spatique, c'est important,mais le plus important à retenir, c'est surtout la terminologie,
00:01:24 :parce que c'est ça qui va vraiment vous permettre de vous en sortir et de bien comprendre ce que vous faites en tout cas.Et surtout, quand vous vous exposez aux différents problèmes,vous vous posez des questions, que ce soit sur le stream ou à d'autres personnes que vous connaissez qui font du stream,
00:01:42 :si vous n'utilisez directement les mêmes termes, c'est sûr que vous comprendrez.Parce que si par exemple, pour revenir sur ce qu'on parlait à l'instant,si vous doutez que vous avez un problème avec vos paramètres alors qu'en fait vous parlez des arguments,bon, au fur et à mesure de la discussion et de l'échange de codes qui arrivera un moment ou un autre pour essayer de se faire comprendre,
00:02:08 :on va finir par savoir où se posent vos problèmes.Mais si vous commencez déjà par utiliser le même argument, ça va vraiment simplifier la discussion et surtout accélérer la résolution de votre problème.
00:02:18 :Donc au bout du compte, bien connaître les termes, la terminologie, puis il n'y a aucun problème.Donc pour continuer dans cette lignée-là, ce soir on va voir un type d'objet un peu particulier,qui se rapproche des classes, qui est une classe d'ailleurs, il s'agit de la data class.
00:02:39 :Alors la data class est une forme particulière de classe.Vous verrez, elle n'a pas tout à fait le même fonctionnement qu'une classe normale,mais elle va avoir des applications très intéressantes.
00:02:54 :Voilà, on va découvrir tout ça ensemble.Pour commencer, je vais vous mettre un code que vous avez peut-être déjà vu.Voilà, le code de la classe voiture qu'on peut retrouver sur Medsling.
00:03:11 :Donc là, on va en prendre un petit peu le descriptif de cette classe.Le nom de la classe voiture, je rappelle, toujours mettre une majuscule à la première lettre des classes,et les fonctions, les écrire tout le temps en minuscule.
00:03:33 :Après, on peut faire du camel case si nécessaire,mais toujours commencer par une majuscule pour les classes et une minuscule pour les fonctions.Ça permet de bien les repérer.
00:03:44 :Vous me direz, il y a une classe, il y a des f devant pour les différencier,mais c'est une convention de nommage.Je pense que les conventions de nommage, pour la plupart des éléments qui se définent en pythons,ce n'est pas forcément une idée si bien dépendante.
00:03:57 :La première méthode que l'on retrouve, c'est la méthode init,celle qu'on est obligé de faire pour toute classe.C'est surtout là que ça va se passer au niveau des autres classes.
00:04:07 :Donc, dedans, on a nos différents paramètres.Le self qui, je le rappelle, représente l'objet, l'influence de classequi sera créé à partir de cette classe dans les manœuvres ultérieures.
00:04:21 :Ensuite, les différents paramètres, la marque, le modèle, l'année, la couleur, le thème.Et pour pouvoir les créer avec l'instance,lorsqu'on va créer une classe instance,si je mets ici ma voiture,voilà la voiture, peu importe les paramètres, les arguments.
00:04:46 :Grâce à ça, on va pouvoir mettre que Toyota, c'est égal à la marque,Corolla est égal à le modèle, et ainsi de suite.Et ça va nous permettre, par la suite, d'appuyer les différents attributs d'instance.
00:05:04 :Donc, par exemple, pour faire un clip,j'ai ma voiture, point marque, par exemple.Donc là, on est sur le fonctionnement d'une classe basique.Il y a deux petites méthodes supplémentaires.
00:05:21 :Je vous les montre pas là, parce qu'on va s'en servir après dans le DataCast.C'est des méthodes qui existent de base dans les classes.Elles sont peu utilisées, mais elles ont leur importance dans le DataCast.
00:05:35 :C'est pour ça qu'elles sont présentes dans le code.La première, c'est la méthode REP.Celle-là, c'est tout simplement une méthodequi va permettre de définir quelle forme va apparaître notre instancesi on fait un simple print de l'instance.
00:05:50 :Par exemple, en code.On va faire un print de ma voiture.On va lancer le code.Et là, vous voyez que ça apparaît bien.C'est ici.
00:06:07 :On a montré ça la semaine dernière.Gabriel.Le HEC, le REP et le SDR.Voilà.Donc ça, c'est ce qu'on appelle des méthodes spéciales.Les méthodes spéciales, ou parfois appelées méthodes magiques,vous les identifierez tout simplementparce qu'elles ont toujours deux underscores au début et deux underscores à la fin.
00:06:31 :D'accord ?À chaque fois que vous voyez une méthode qui a deux underscores,ce sont des méthodes spéciales, dites méthodes magiques,qui sont des méthodes qui sont à la base définie dans le code.
00:06:42 :C'est-à-dire que typiquement, on va faire ça pour l'exercice.Hop.Si je supprime cette fonction REP.OK.Là.Je regarde.Je vais mettre un petit peu de terminal,parce que je pense qu'on peut se permettre d'avoir un petit terminal.
00:07:00 :Voilà.Hop.OK.Je relance le script.J'ai bien quelque chose qui s'affiche, d'accord ?C'est pas structuré,parce que ça n'a pas été défini.Mais ça me renvoie un objet.
00:07:16 :Parce que la méthode REP, en soi, elle est déjà définiedans le code de Python par défaut pour les cases.Le fait de la redéfinir là,hop, je vais revenir en arrière,ça nous permet de dire,non, je ne veux pas que tu me retournes l'objet en soi, l'instance,
00:07:34 :parce que là, ce qu'on voit ici, c'est l'instance.C'est-à-dire qu'on voit bien qu'il y a une instance, une voiture,qui est située à l'emplacement mémoire qui est indiqué ici.
00:07:42 :D'accord ?Plutôt que de m'afficher l'instance globalement,moi, je préfère que tu m'affiches, voilà,quelque chose d'un peu plus stylé,avec, voilà, la voiture,un métier que la marque est égale à la CFMARC,un modèle à la CFMARC, et ainsi de suite.
00:07:57 :Donc, ces méthodes-là, typiquement,si vous les définissez pas dans vos cases, elles décrivent rien.D'accord ?Sauf que vous aurez des résultats purement basiques.Ici, comme on le voit, le main, voiture, object, axe.
00:08:09 :OK ?C'est la même chose pour le head.Alors, le head, c'est une équivalence.D'accord ?C'est pour voir si les deux véhicules correspondent.Donc, on va créer un autre véhicule,pour que vous puissiez voir ça.
00:08:24 :Tac.Alors,voilà, il n'y en a que trois heures.Trois heures.Non.OK ?Euh...OK, alors...Euh...Égal, voilà.Égal, voilà.Donc, là,ça va me permettre de voirsi l'oseur...
00:09:04 :Alors, d'abord, on vérifie ici si l'oseur est bienun objet de type voiture.D'accord ?Puisque, je le rappelle,lorsqu'on crée une classe,on crée un type d'objet.
00:09:18 :Au même titre que vous avezles dictionnaires,les chaînes de caractère,les listes,les impôts, etc.Lorsque vous créez une classe,vous créez un type d'objet.
00:09:29 :Alors, pour ceux qui étaient là,je vous rappelle, la dernière fois,il y a un petit moment déjà,quand on avait travaillé sur les classes,sur les chaînes de caractère,vous avez monté,on peut aller voir,on retrouve dans le code de Pythonla définition des classes voitures,les classes...
00:09:49 :Ah, bon, les classes TR,les classes Link,et ainsi de suite.Donc, à partir du momentoù vous créez une classe,vous créez un nouveau type d'objet.
00:09:55 :Donc, là,on va d'abord vérifiersi l'instance est bien,si l'objet, l'oseur,est bien une instancede la classe voiture.Ok ?Parce que, là,le useInstance,on l'utilise pour voirsi...
00:10:09 :Je l'utilise souvent,vous l'avez peut-être déjà vu,pour vérifier si c'est bienune chaîne de caractère,si c'est bien un missionnaire,si c'est bien un maintainer.
00:10:16 :Le useInstance,comme on l'a dit,il vérifie si les paramètresqu'on lui passesont bien,correspondent bien à une instance.D'accord ?Vous voyez,on retrouve bien la terminologie.
00:10:28 :Ma voiture est une instancede la classe voiture,oseur est une instancede la classe voiture aussi.Donc, là,il vérifie que le premier argumentqu'on lui passe,à savoir oseur,est bien une instancede la classe voiture.
00:10:40 :D'accord ?Et ensuite,il va vérifiersiself.markD'accord ?est bienégal à la marque,c'est-à-dire,si on a bien exactementla même voiture.
00:10:57 :Donc,on va écrire le codequi correspond.If ma voitureégale égale oseur.Parce que,si vous n'avez pasl'équivalencequi va êtredéfinie ici,il ne sera pas capablede faire une comparaisoncomme ça.
00:11:12 :D'accord ?Alors,il va se baser surdivers paramètres,mais pas forcémentvérifier qu'on a biendémarqué le modèle,année, couleuret qu'il y aun étage identique.
00:11:22 :D'accord ?Donc,on valaisser du tempstravailler.Voilà.OK.Donc, là,je sauvegarde ce code-là,je le lance.Boum,limite les voituressont identiques.
00:11:35 :L'année,c'est làet là.Il dit que les voituressont différentes.D'accord ?Puisque,ici,dans le return,vous voyez bienqu'on ades conditions cumulativespuisqu'on n'a que des N.
00:11:48 :D'accord ?Si on avait que des O,là, il me répondraitque oui,c'est OKpuisqu'il y auraitau moinsune des valeurs,notamment,on en aurait 4 sur 6,qui serait bien égaleà cellede notre objetoriginel,à savoir ma voiture.
00:12:03 :D'accord ?Est-ce que c'est bonpour tout le mondejusque-là ?Oui.D'accord.Alors,maintenant,quelle est la différenceavec les dataclasses ?Parce que,pour l'instant,je voulais beaucoup parlerde dataclasses.
00:12:17 :Mais quelle est la différence ?Alors,déjà,on va supprimer tout ça.Donc,je vous demandede faire un petit effortde mémoire.Vous vous rappelez grossièrementce qu'on avaitdans les stages voiture.
00:12:28 :Au pire,vous vous rappelezce qu'on avaitdans les stages voiture.Donc,au pire,vous revenez en arrièresur la vidéo.C'est un peu compliqué,on est en live.
00:12:38 :Bon,c'est tout.J'aurais tenté ma blague.Alors,les dataclasses,déjà,c'est un module en soi.D'accord ?Donc,il va falloir d'abordimporter l'outil nécessaire.
00:12:49 :Donc,là,par contre,c'est bien,c'est un petit peucomplexe à retenir.Donc,c'est fromdatacasesimportdataclass.Alors,ça rigole un petit peuavec le côtédataclass,dataclass,mais attention.
00:13:07 :Notez bienque le module généraldans lequel se trouventtous les outilsliés à la dataclasss'appelledataclasseset que l'autre,on l'apporte,c'est dataclass.
00:13:17 :Croyez-moiqu'il y aun petit tout boutde ce genre-là.Moi,ça m'a fait chercherpendant des heureset des heures,une heure,dans mon code.
00:13:27 :Voilà,j'ai raconté à l'époque.Parce qu'il n'y avait pasd'outils automatiquesqu'on peut avoirmaintenant dans Visual Schoolet ça m'a fait chercherde ça longtemps.
00:13:35 :Et,comme on adu muteup,je vais allerfaire çaavec les oignons.Logiquement,si je faiscomment ça,faire ça,il va me proposerl'équivalencede ce qu'on avaittout à l'heure.
00:13:49 :Voilà.Il m'a oubliéla datede ce spectacle.Il manquela couleur.Donc,je vaismettrela couleur.Il manquela couleur.Voilà.Alors,hop,et ça,on va l'enlever.
00:14:06 :Donc,là,j'ai crééune data class.OK ?Et là,ce que vous voyez là,c'est quasil'équivalentde ce qu'on a faittout à l'heure.
00:14:17 :Je vais mettrece code là,il ne sera pas content.Il arrêteramon code.Donc,là,je vaismettremon codelà.Donc,vous voyez que déjà,pour créerune instancede ma classe,déjà,je n'ai plusde init.
00:14:36 :OK ?Mais,donc,mes paramètres,je ne les mets plusentre parenthèseset tout çadans ma classe init.Je les metsen colonneles unssous les autresdirectement.
00:14:49 :Et ensuite,je précise,alors,avec les data class,il faut le faire,je précisesystématiquementle type.C'est-à-dire,le typed'argumentqu'il faudra passerpour que ça soit valable.
00:15:02 :D'accord ?Et ils devront être passésdans l'ordredans lequel je les ai misdans la colonne.Donc,déjà,par rapport au codede tout à l'heure,je pense qu'on a quand mêmeun petit peusimplifié les choses.
00:15:14 :Alors,on va sauvegarder çaet on va lancer.Et vous voyezqu'il marche bien,les deux voituressont différentespuisqu'on a biennotre problématiqued'équivalencequi est définietelle qu'on l'avait vuetout à l'heuredans la classe.
00:15:28 :Si je remetsmon année en 2020,je lanceune heure d'illuminationet les deux voituressont identiques.Maintenant,si je printma voiture,et bien là,vous voyez,il me metexactement la même choseque tout à l'heure.
00:15:42 :Bon,le reste,avec le codede tout à l'heure,il me metexactementla même choseque tout à l'heure.Donc,vous voyezce qu'on avait tout à l'heuredéjà par rapportà la classe voiture.
00:15:55 :On est passéd'une quinzainede lignes,à peu près.Là,on a réduitl'idéeà cinq lignes.Donc là,ça devientun peu plus intéressantpour les états de classe.
00:16:07 :C'est làoù on vase servirdes états de classe.C'est notammentquand vous avezbesoind'un systèmequi estun peu pluscomplexepour les états de classe.
00:16:19 :Donc,c'est notammentquand vous avezbesoinde créerdes classesqui sont làpour surtoutstocker de la donnée,d'où le termedata class.On va utiliserla data classparce qu'elleva vous permettrede créerune instanceavecdes attributsqui ont des valeurset après,on manipulera
00:16:41 :ces valeursautrementau traversd'autres logiques,d'autres fonctionsvoire éventuellementd'autres classes,mais on n'utiliserapasla data class.Maintenant,on peut très bienle faire.
00:16:54 :Admettonsqu'on estchezun registreun peuverreux.On peut direque,par exemple,hop,modevoiture,exemple,clac,on peutdirequepar exemple,hop,modevoiture,on peut direque par exemple,hop,on va bien utiliserun sel,puisque malgré tout,même s'il n'a pasdéfini en minutes,
00:17:24 :il est implicitementdéfini quand même,d'accord,et on va dire,par exemple,on va le laissercomme ça,hop,clac,voilà,et on va direque sile kilométrageest égalà,voilà,supérieurà 20 000par exemple,on va direque le modèleest égalà 20 000
00:17:47 :par exemple,on va dire que le modèleon va direque c'est un modèle usé,on ne va pas être surun garage du zéro,on va être surun garage du sommet,je ne vais pas encouragerdes mauvaises actions,alors,donc,par exemple,je vais mettrema voiture
00:18:02 :ici à 25 000,on va laisser55 000,c'est une générosité,on va laisserl'autreà15 000,voilà,je sauvegarde ça,je lance,et là,ah oui,je ne fais pas ça,je vais passerles deuxen mode,sur mode voiture,et,voilà,pour moi,si j'oublied'utiliser
00:18:28 :ma fonction,voilà,clac,je la lance,et là,je lance,et là,je lance,et là,je lance,et là,je lance,et là,je lance,et là,euh,parce que,ah oui,parce que j'ai pris une fonction.
00:18:48 :Mavoiture,mais parce queje ne retourne rien,forcément,il se trouve que je fassecomme ça,égal,voilà,et weather égal weather.Je relish un petit peucette idée.
00:19:01 :Allez.Voilà.Je vais nettoyerun peu ça...Voilà.Je relance le script.Donc,je ne vais modifier rien.Pourquoi ?C'est le kilométrage.Peut-être que t'as mis55 000.
00:19:26 :Ah oui, c'est 200 000.C'est facile.C'est pour ça.Alors, attendez.Est-ce que j'ai...Oui, si.Tac.Donc, normalement,voilà.Excusez, c'est bizarre.Normalement, il n'y a pasbesoin de retourner.
00:19:47 :Oh là, oh là, oh là.Boum, boum.OK.Allez, on va voir ça.Voilà, on y arrive.Il semblait bien qu'il n'y avaitpas besoin de retourner,normalement.
00:20:01 :Donc là, vous voyezque la première voitureest devenue une Corolla usée.D'accord ?Et la seconde voitureest restée une Corolla.OK ?Donc, on peut avoirquand même des méthodesau sein d'une dataclasse.
00:20:15 :Ce n'est pas juste une classequi est faite làpour stocker de la donnée.Maintenant,on est quand mêmeun peu plus prochede ce but premier,à savoir stocker de la donnée.
00:20:25 :Mais on peut avoirdes méthodesqui vont,par exemple,permettre de,soit modifier ces données,soit faire des calculsou autre.Ce n'est pas le but premierde la dataclasse.
00:20:38 :Je ne vous conseillefranchement pasd'utiliserou d'en abuser comme çaou alors vraimentfaire des méthodesqui sont nécessairesà votre logique.Parce que,pour la petite anecdote,quand j'ai découvertles dataclassesau début,je me suis ditsuper génial,je n'ai plus besoinde m'embêteravec ce vilain truc-là,
00:20:56 :le destiny,où je me prends la tête,je marque un coupdestiny,self,marque,modèle,année,couleur,et après,qu'est-ce que je fais ?Elle point marqueégale marque,elle point modèleet après,j'ai ma classe,je me dis,oh putain,c'est super ça,je n'ai même plus besoin
00:21:16 :de m'embêterà faire les selfset tout,j'ai ma classeet puis,je peux fairetoutes mes méthodescomme je veux.Alors,par expérience,puisque j'en ai uséet en abusé,ça fonctionne,vos classes fonctionneront.
00:21:30 :Sauf que le problème,c'est que,lorsque vous êtes obligéde refaire une vraie classeparce que là,il n'y a pas le choix,vous allez être un peu perduet ce n'est surtoutpas le butOuiOui ?
00:21:41 :C'est un peu commeune propriété ?Pardon ?Un peu comme uneproperty ?On peut mettredes règles,des fonctionssur la classe,non pas pour essayerde stockerde la donnéeà enregistrer,mais juste pourmettre une informationquelque part.
00:21:57 :Alors,on peut l'utiliserpour stockerde l'information,c'est généralementle premier butde la classe.Alors,on peut utiliserla classepour stockerOn peutégalementavoirdes manipulationsen passantdes paramètresà data classparce que data class,donc le décorateur,je vous le rappelle,les décorateurssont des extensions.
00:22:21 :D'accord ?Donc,on peutavoirundata class.Par exemple,on peut mettreici,par défaut,vous avez un premierargumentqui expliqued'ailleursla formedes data classqui estl'argumentinit.
00:22:44 :Ok ?Donc,si mettons,je vais faireune data classen dessuspour ne pasmodifiercelle-làpour qu'on puissela retravaillersur d'autresexemples.
00:22:57 :Voilà.J'asserreune data classet on va diremoto.Par exemple,ma data classpeut mettreinitégalaux.Je sauvegarde.Et là,je vais essayerde créer une moto.
00:23:20 :Donc,mamotoégal motogammaVoilà.Vous voyez,déjà,il me met un petitsouci là.Il me dit,il y a un truc qui ne va pas.
00:23:44 :Parce que,tout simplement,en faisant init falsesur ma data class,alors,il n'y a pas un grosintérêtquand je vais luil'avoir expliqué.
00:23:53 :Ça signifiequ'il va falloirimplémenterla méthode init.C'est-à-direqu'on revientà la classe de baseoù on implémentenotredeath init.Donc,il y a comme ceci.
00:24:05 :Donc,on est tout de suiteà se satisfaireavec le type pilot.Voilà.Et,on réimplémente tout.OK ?Donc,on a la possibilitéde mettreinit false.
00:24:17 :Par défaut,ce paramètreest par défautun true.Donc,c'est pour çaqu'on n'a pasbesoin de faireinit.Donc,on peut se contenterde mettrenos différentsattributscomme ça.
00:24:32 :C'est comme ça.Clac.L'autre paramètrequ'on peut mettre,c'estle paramètreset.OK ?Alors,lui,par défaut,je crois qu'il atrue.Donc,c'est unnon.
00:24:48 :Voilà.Donc,c'estunnon.Donc,c'estunnon.Donc,c'estunnon.Donc,c'estunnon.Non,il est àfalse.C'est pour ça.Voilà.
00:25:10 :Le rep,on le met àfalse.Voilà.Mais ça va nousforcer,pareil,comme pourle init.Si on vaavoir un rep,il va falloirle redéfinir.
00:25:23 :Pareilpourle suff.D'accord ?Si on le metà false,il va falloirle redéfinir.Il y aun autreargumentqui vanous permettredeclasser,d'ordonner,detriernosdifférentesinstances.
00:25:44 :Alors,celui-là,c'est un argumentqui est assez intéressant.C'est l'argumentorder.A partirdu momentoù on metorderàtrue,on va pouvoirimplémenter desméthodes.
00:25:59 :Donc,il y adeuxméthodesqui vont nouspermettre degérerle tri denos étudiants.D'accord ?Donc,et qui vontpouvoir utiliser,alors,ça va utilisergénéralementle premierargumentpour lestrier.
00:26:19 :Ok ?Donc là,par exemple,je vais faireune classeétudiante.Ok ?Voilà.On vamettreen premierargumentla note.Ok ?Le nometallez,lâche.
00:26:37 :Ok ?Donc là,j'insère ma dateà classe.Etje n'utiliseplus.Maintenant,je vais créerdes étudiants.Allez.Unégaleétudiant.Ok ?Donc,on vamettreunargumentpourlesétudiants.
00:27:00 :Tac.Tac.Euh,on va faire unsuivant de troisquand même.Il y aquelque chose.Voilà.Ok.Donc là,je mets mes étudiantsdans une liste.
00:27:13 :Ok ?Donc là,on est bien d'accordque j'ai une listede trois instancesd'objetsde typeétudiant.Donc,là,j'aiune listede trois instancesd'objetsétudiants.
00:27:28 :Ok ?C'est bon pour tout le mondejusque-là ?Alors,sij'étaissur des objetseuh,sur des instancesde classenormale,je ne pourrais paseuh,utiliser les méthodessortet sortil.
00:27:44 :Parce qu'en fait,euh,il n'y auraitaucune logique,aucune règlequi permettentde triereuh,ces étudiants.D'accord ?Donc,je peuxtrès bieneuh,faire unsortileuh,preqétudiantégalàsortilétudiant.
00:28:07 :Donc,je rappelle,sortileuh,qui est une fonctionqui prend en paramètreune liste,va trier les élémentsde la listeetsort,qui est une méthodeeuh,euh,de la classeenfin,de la classe listequi va fairela liste.
00:28:26 :La différence,c'est quesortilrenvoiela liste,sortest une méthodeet agit sur la listeen elle-même.Ok ?Là,à la sortie dede cette ligne,j'ai toujoursune listestudentet une listesortil studentqui existe en mémoire.
00:28:45 :Ok ?Euh,hop !Et,on va les imprimer comme ça.Vous allez voirqu'effectivement,on a bien eu un classementen fonction du premierà savoir la noteet on retrouve biendu plus petitau plus grandnos trois objets.
00:28:59 :Ok ?Maintenant,j'attire votre attentionest-ce qu'il n'y a rienlà-dedansqui vous,euh,que vous remarquez ?Et ça,ce que,ce que,ce que je vous attirevotre attention,c'est valable aussipour,euh,les,les classeshabituelleset classiquesen piquant.
00:29:20 :Ok ?Donc,Bob l'aurait euétant le premier,non ?Pardon ?Bob l'aurait annoncédans l'ordre croissant,pas bon ?Hum hum.Je vais vous guiderun petit peu,c'est sur la définitiondes différents étudiants.
00:29:35 :En fait,à partir du momentoù je définisle nom,euh,de l'attributavec un égalet sa valeur,je peux mettremes différents argumentsdans n'importe quel ordre.
00:30:04 :Je ne suis pas obligéde respecter l'ordrequi a été définiau préalable.Et ça n'a même pasd'influenceeuh,sur le faitque je vais utiliserma classe habituellepour définirmes différents étudiants.
00:30:16 :Donc,je peux mettremes différents étudiantsdans n'importe quel ordre.Je ne suis pas obligéque je vais utiliserma méthode sortied'une sourcesur la liste d'étudiants.
00:30:25 :J'ai bien utilisél'attribut neufpour faire le classif.Ok ?Et ça,c'est valableavec des classeshum,on va dire normales.Euh,à partir du momentoù vous définissezl'attribut,vous mettez égalet la valeur,vous pouvez les mettredans la classe habituelle.
00:30:42 :Vous n'êtes pas obligéeuh,de mettreles argumentseuh,positionnelsdans le premier,deuxième,troisième,etc.Vous avez le droitde les mettredans n'importe quel ordreà partir du momentoù vous précisez bienque,euh,ben,88,5 correspondà l'attribut neuf.
00:31:02 :22 correspondà l'attribut H,et ainsi de suite.Ok ?Sans mauvais jeu de mots,c'était une petite parenthèsedans la parenthèsedes paramètres.Alors,maintenant,l'autre point,on va conserverun petit peunos étudiants.
00:31:16 :Admettonsque,euh,Alice est super sympaet,euh,elle m'a apporté,euh,une part de flan,euh,j'adore le flan,donc elle m'a apportéune part de flan,machin,et elle est vachement sympa,je vais lui rajouter10 points sur sa note.
00:31:33 :Ok ?Donc,je peux très bienfaire ceci.Tu donnes1,3,4,5,6,7,8,9,plus,allez,10 points,j'ai dit.Ok ?
00:31:51 :L'influence sur le classement,c'est pas très éthique,mais,comme je vous l'ai dit,j'adore le flan.Donc,là,si je refaisle classementdes étudiants,et,euh,print,euh,je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas,
00:32:11 :je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas,je ne sais pas.
00:32:18 :Comment faire ?Alors,euh,print,euh,alors.Voilà.Donc.7,8,voilà.Ok.Je trouve ça,je lance,hop,du coup,ça a bien marché.
00:32:35 :Alice est passéede la deuxième placeà la première place,et c'est du point de bonusgrâce à lui.Du coup,je faisais ça,je décrivaisque c'est du point de bonusgrâce à la part de Franck.
00:32:45 :Ok ?Mais,admettons,euh,bah le,le principal ou le,le,du collègeou le proviseur du lycée,peu importe.Lui,ça lui plait pas tropet il veut que,euh,il puisse pas modifierles résultats.
00:33:01 :Grâce au data class,on peut le fairegrâce au,à l'argumentfrozen.Donc là,maintenant,je vais remplacermon order.Alors,je vais laisser mon orderparce qu'on va l'utiliseret je vais rajoutermon frozen.
00:33:15 :Ok ?Et là,tout de suite,vous voyezqu'il y a une erreur.Là,quand je vais ajoutermes 10 points de bonusà Alice,bah c'est pas possible.
00:33:25 :Tout simplementparce quefrozen,euh,va créereuh,frozen class,d'accord ?Euh,dans le cas des data class.Ce qui fait quetoutes les instancesque vous allez créerà partir de cette data class,elles seront immuables.
00:33:41 :Vous ne pourrez plusmodifierles attributsde cette classeune foisque l'instanceaura été créée.Vous pourrez toujourscréer autantd'instancesde la classeque vous voulez,maisen aucun cas,vous ne pourrezen modifierles valeurs,la valeurde vos attributs.
00:34:00 :Ok ?Donc,c'est l'astuceanti-étrichedu principaldu collègepour empêcherde créerdes attributsdu principaldu collègepour empêcherque les profs soientsoudoyésavec des parts de classe.
00:34:15 :C'est bon pour vous ?Oui.Ok.Alors,maintenant,euh,on a faitun petit peutout ça,on va se rapprocherun petit peuplusdes,euh,les classesque l'on connaîthabituellement.
00:34:32 :Alors,je vais redonnerune voiture.Tac.Tout à l'heure,on a évoquérapidementla problématiquedes,euh,les,euh,les argumentspositionnésde nom.Euh,si on veutdéfinirun,un argumentpar défaut,euh,donc avecles classes classiques,celles finiteset tout ça,on va,euh,mettre,on peut mettre
00:35:02 :une valeur par décès.Ok ?Alors,par exemple,on va dire100 000.Ok ?Donc là,si je créeune voiture 1,voilà,je ne mets pasde kilométrage ici.
00:35:15 :Ok ?Je printma voiture 1.Ok ?Je lance.Effectivement,il n'y a pasde problème.Et ma valeur par défauta bien été priseà 100 000comme je l'ai désigné.
00:35:27 :Donc,vous voyezexactementavec les dataclassescomme avecles classesnormales.Donc,on vaon peutdéfinir des valeurspar défautpour lesdifférentseuh,différenteseuh,d'attributs.
00:35:46 :Pardon,sinon moi,je,je,je ne m'arrêterai pas.Maintenant,les dataclassesconcernant tout ça,donc les valeurspar défaut,ainsi de suite,euh,prévoienteuh,différentes possibilités.
00:36:01 :On a vueuh,qu'on pouvait passerdes paramètrespar exemplel'égalpause,leeuh,pour passer à définirle,la représentation,les poils,l'égal pause,et ainsi de suite.
00:36:16 :Euh,on va pouvoircréereuh,ce qu'on vaappelereuh,leseuh,attributseuh,masquésd'une certaine manière.Pour cela,on va apporterune autre méthode,une autre fonctiondesdataclasses,la méthodeeuh,field.
00:36:38 :Alors,qu'est-ce qui va se passer ?Euh,tiens,par exemple,euh,on ne veut pas que,euh,euh,on veut avoirune valeur par défautde 1000,d'accord ?
00:36:51 :Et là,par exemple,je peux mettreeuh,repégalpausesontnon,je ne peux pas.Là,je ne peux pas mettrede rétrégation,d'accord ?
00:37:06 :Mais le,la méthode fieldme permet justementd'ajouter cela.Donc,ici,je vais ajouterun field,OK ?Et je lui passeun argumentque je veux définirpar défautou des qualitésque je veux définirpour,euh,cet attribut.
00:37:24 :Donc,je vais mettreun fieldet je vaisdonc,on va revenirà ma valeur par défaut,OK ?On va rester sur 100 000,OK ?
00:37:34 :Mais,je peux déciderque finalement,ben,je ne veux pas que,euh,le télémétrageapparaisse,OK ?Euh,hop,je vaisoublier leégal ici,voilà.
00:37:49 :Donc,là maintenant,la valeur par défautde,euh,ma voiture,c'est 100 000et avec ça,je ne veux pasque ça apparaissesi on fait un printde la voiture.
00:38:01 :OK ?Je vais lancer ça.Effectivement,le kilométragen'apparaît pas.Pour autant,je peux y avoir accès.Si je faisun print,euh,voilà.OK ?
00:38:13 :Je vaisdémonterle métrage.Je vaisdémonterle télémétrage.Je vaisdémonterle télémétrage.Je vaisdémonterle télémétrage.Je vaisdémonterle télémétrage.Je peuxl'afficher.
00:38:30 :D'accord ?Mais par défaut,lorsqu'on va imprimerl'objet,ceci ne va pass'afficher.Vous pourrezimaginer,euh,un premier exemple,un exemple,on va dire,comment dire,euh,assez,assez classique.
00:38:46 :Euh,admettons que,euh,ce ne soit pasune classe voituremais une classe user.D'accord ?On pourrait avoir,alors,on va mettrecelle-là,et,on pourrait avoirpassword.
00:39:00 :Ok ?Et on va lui mettreun fil,ret,régal,plus.Ok ?Alors,ça,je vais modifierça.Voilà.Clac,clac,clac.Ce qui fait que,par défaut,si j'imprimeeuh,mettons l'argent,je vais créerun user.
00:39:22 :Euh,un user.Un user.Deux,régal,ok.User.Trois,régal,ok.Je vais créerune listed'users.Voilà.Et si je faisun print,enfin,voilà,on utiliseun print user,ok.
00:39:43 :Très bien.Je veux bien avoirla listede mesutilisateurs.Donc,si je faisun print,enfin,voilà,je veux bien avoirla listede mes utilisateurs,mais je n'aurai pasl'affichagede leur mot de passe.
00:39:59 :C'est plutôtune bonne pratique.D'accord ?Maintenant,si,euh,j'estime que,par exemple,j'ai créé une fonctionoù mon userme demandede lui renvoyerson mot de passe,je peux,quand même,lui renvoyerson mot de passe.
00:40:16 :Par exemple,le mot de passedu user 3,je l'imprime,hop,voilà,c'est générable,si je peux y avoir accès,je peux lui envoyer.Donc là,ça peut être utile,par exemple,la méthode feed,pour le rep,qui est le false,par exemple,euh,de dire,ben tiens,quand on imprime
00:40:36 :par défaut l'utilisateur,on imprime queces réfuges-là,mais le password,on ne l'imprimeque s'il est expressémentdemandé.On peut faire ça,euh,par exemple,pour l'école.
00:40:47 :C'est-à-dire que,par exemple,euh,on va revenir là-dessus,voilà,je vais revenir surle datapass des voitures,ça,je le garde,voilà,classe,euh,voiture,tac,voilà,euh,boom,voilà,euh,couleur,alors,euh,tac,euh,voilà,je vais garder la fillesur chaque,ça m'a très bien,mais surtout que
00:41:16 :je vais les mettreautrement,donc je vais mettremonécoleàau-dessuségalauxOK,et là,je vais mettremonécoleici,voilà.Et on peutle prendrecomme ça,voilà.
00:41:36 :Euh,non,avec l'école,on peut pasutiliserl'école,on peut pasutiliserl'école,on peut pasutilisereuh,non,avec l'école,on peut pas,je vais retrouvermoi,je vous dis une bêtise,euh,il y a le redqui fonctionne,je pense que vous allezvoir le sortie qui
00:41:59 :va pouvoir fonctionneraussi,mais j'ai un doute...Non,je le prends pas,donc c'est principalementpour le red,après il y aplein d'autres,il y a d'autresattributs dans lefield,je vous inviteà aller voirla documentationsuivie,euh,de sélectionnersur les champspour avoir quel
00:42:19 :comportement ils onten fonction de lasituation,le principal à retenirquand même,c'est le redégal fausse,parce que,euh,celui-là,il va vraimentvous permettre,euh,d'avoir des,de mettre desattributs en modeun petit peuattributs,euh,cachés,d'accord ?
00:42:40 :Est-ce que ça vajusque-là ?Alors,je vais vous montrerune dernière méthode,euh,on va direc'est une méthode,euh,dite magique,euh,qu'on peut utiliserdans le cadre desdatacasts,c'est la méthodepost-init.
00:42:56 :Alors,euh,je vais utilisercet exemple-là.Alors,je vais utilisercet exemple-là.Alors,je vais utilisercet exemple-là.Alors,je vais utilisercet exemple-là.Alors,je vais utiliserun petit peudelaméthodeditedataclasseuh,voilà.
00:43:20 :Donc,ça c'est une petiteclasseeuh,qui créedes emailset en post-initil va voir icisi le mailest,euh,valide.Donc,on va créerunemaileton vacréerlemailquivaêtresaleetvaêtrevalide.
00:43:49 :Donc,je vaisfaireunpetitdédaindeçapourfaireunpetitdédaindecréerunmailquiseravalide.J'aiuneerreurquiestlevéeparce quemonformat deemail n'estpasvalide.
00:44:21 :Alors là,dans l'exemple,j'ai uneerreur quiest levée.Lever uneerreur n'estpas toujoursla bonnesolution,mais c'estaussi le casparce quec'est unélémentcrucial denotremétier.
Aucune occurrence trouvée pour « ».