Session du 04 novembre 2024 à 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 TOSA
Session de mentorat dans laquelle on passe en revue les dataclass et certaines fonctionnalités avancées. On voit également à la fin la création d'un script de "secret santa" avec l'opérateur modulo.
00:00:00 :Ok, super.Ça, je vais fermer et mettre l'anglais ici.Du coup, ce soir, on va parler des dataclasses.Je ne sais pas s'il y en a qui ont des interrogations avant, sinon on peut continuer.
00:00:20 :De toute façon, si jamais vous avez une question qui vous revient pendant le mentorat, vous pouvez la poser directement, pas de problème.Les dataclasses, est-ce qu'il y en a ici qui les utilisent ou pas déjà, ou déjà utilisées ?
00:00:33 :Ouais.Pas Stéphane, ok.Il y en a d'autres qui savent ce que c'est ou d'utiliser, ok.Ok, j'ai moins de personnes.Les dataclasses, du coup.
00:00:52 :Bon, alors, je fais toujours un parallèle avec le TOSA parce que c'est une session TOSA,mais bien sûr, ça reste du Python général et ça vous servira pour faire du Python général.
00:01:03 :Mais si jamais vous avez la question, et si je ne dis pas de bêtises,j'ai vérifié, Python dataclass, c'était introduit dans Python 3.7, si je ne dis pas de bêtises.
00:01:15 :Elles ont été ajoutées dans la version 3.7.En gros, c'est un moyen simplicier de créer des classes.En fait, ça permet de faire des classes pour stocker des données.
00:01:27 :Et ça réduit pas mal la quantité de code.Ce que vous allez voir, l'utilisation est assez sympa.C'est Jean-Christophe.C'est Jean-Christophe.Bonsoir, est-ce que vous m'entendez ?
00:01:49 :Oui, super.Merci, bonsoir à tous.Bonsoir.Du coup, on a commencé à parler des dataclasses.Je vais partager mon écran.Est-ce que vous voyez ou pas ?
00:02:16 :Un peu petit, peut-être.C'est bon, là, comme ça ?C'est parfait, c'est parfait.C'est parfait, merci.Pour utiliser dataclass, je disais que c'était rajouté en Python 3.7.
00:02:44 :Et que ça permet de créer des classes destinées à stocker des données.Bon, je vous ai dit qu'il y avait au moins trois personnes qui l'utilisaient ou devaient l'utiliser.
00:02:53 :Moi, perso, je les connais, mais je les utilise peut-être à rêver une fois.Je n'utilise pas énormément.Attendez, je crois qu'on a fait un truc qui sonne.
00:03:05 :Peut-être qu'il y en a un pour s'enlever la main.C'est bizarre.Et du coup, excusez-moi,ça permet de simplifier pas mal de codes.Vous allez voir, pour les utiliser,on utilise le module dataclass et on va importer dataclass.
00:03:21 :Je vais réfléchir un peu en même temps, c'est que je ne vais pas faire rien.Et donc, pour créer une classe avec dataclass, vous allez voir,on utilise le décorateur dataclass.
00:03:29 :On va faire une classe, par exemple,bon, j'ai pris des exemples très basiques, un point.Et là, on va créer nos attributs d'instance.Donc, on type.
00:03:41 :Avec dataclass, on type.Et là, j'ai créé mes attributs d'instance.Après, vous pouvez, bien sûr, initialiser votre instance.Comme ça, vous allez avoir un point, je ne sais pas, vous allez avoir 4, 5, et voilà.
00:03:59 :Là, vous initialisez votre instance.Donc, ça, c'est vraiment la chose la plus basique.Ce qui est pas mal avec les dataclass,c'est qu'il y a des méthodes qui sont générées automatiquement,comme la méthode init, peut-être.
00:04:15 :Et, comment on peut l'appeler ?Moi, j'appelle EQ, mais ça peut être équilibre,ou vous pouvez le dire comme ça.Donc, par exemple,il faut savoir qu'ici, j'ai mes attributs d'instance,mais je n'ai pas de méthode init,comme on pourrait faire avec une classe.
00:04:35 :Donc, par exemple, si on est là,si j'ai une classe personne,ici,normalement, je ferais un init.Je ne vais pas forcément typer ça comme ça.
00:04:51 :Ici, j'aurais, par exemple,le nom, l'âge,et puis après, c'est parti, j'aurais mes self.name, et ainsi de suite.Et là, avec les dataclass, comme je disais,au lieu de faire ça, on peut directement faireJ'ai encore du mal à le faire au clavier.
00:05:11 :Ça va arriver.Ça, Stéphane, tu ne m'as pas prévenu.Je rigole.Tu verras, ça fait l'inverse quand tu rebascules sur un PC Windows.Je suis en train de le vivre.
00:05:24 :Et donc là, je fais l'équivalent avec une dataclass.Je n'ai pas de méthode init, mais du coup,elle est générée automatiquement par ma dataclass ici.
00:05:32 :Donc ça, ce n'est pas un attribut de classe,c'est bien un attribut d'instance.C'est important de savoir.Est-ce que Arcelle se connecte ?Est-ce que ça fonctionne ?
00:05:46 :Salut, Arcelle.Salut, salut.Donc Arcelle, on est sur les dataclass, là, du coup.Donc là, ici, je n'ai pas de méthode init.Pour ça, OK.
00:06:00 :Et maintenant, je vais vous montrer.On va créer une instance.Un truc qui est très sympa pour une personne.On va faire « personne ».
00:06:08 :On va avoir, je ne sais pas le nom,mais on va l'appeler…Je m'en fous, peu importe.Et je vais avoir…J'ai 34 ans.Non, j'ai 35 depuis un mois, j'avais oublié.
00:06:18 :Tac.Et donc, ici, vous pouvez très bien accéder…Alors ça, c'est sûr, vous pouvez enlever le commentaire.« p.name ».OK, il n'y a pas de problème.
00:06:31 :Si je le lance, je viens ici.Donc là, pour l'instant, c'est basique.On va remonter un peu après.Et vous allez voir que si je fais…Voilà, j'ai ma méthode « rep » qui est déjà générée.
00:06:48 :Et donc, comme avec une classe,on est obligé de la redéfinir à chaque fois,ici, avec une dataclass,vous voyez qu'elle est déjà toute générée, en fait.
00:06:58 :Elle représente bien votre objet.C'est une convention.Une convention Python.Il faut que la méthode « rep » représente votre objet,comme il est créé.
00:07:10 :Et donc, là, c'est le cas.Sachant que je n'ai pas fait, du coup,donc je n'ai pas de meta-limit,pas de méthode « rep »,ça s'est fait tout seul.
00:07:20 :Ensuite, un truc qui peut être sympa,si je fais une personne 2,la personne, je vais avoir, je ne sais pas…On va dire, je ne sais pas, 47 ans, par exemple.
00:07:44 :Et ici, c'est un mauvais exemple.On va reprendre un gars qui a le même âge,ce ne sera plus…Vous allez voir.Si je fais ici un printp égale à p2,là, c'est tout, c'est OK.
00:08:08 :Parce qu'en fait, la méthode, ici,j'ai la méthode…Je ne sais pas comment la prononcer,vous dites « équive », « eque », en tout cas.
00:08:17 :La méthode « eque »,pour comparer les objets de la même classe.Je crois que c'est la méthode « école » que ça s'appelle.« École », oui, c'est « école ».
00:08:24 :Ce sera plus logique, oui.C'est vrai que j'ai toujours « éque ».On l'écrit, pour ceux qui…Cette méthode-là, « éque ».Du coup, quand c'est un objet…Avec une classe standard, je veux dire,on va comparer à chaque fois les emplacements mémoires.
00:08:44 :Ici, on va vraiment comparer, en fait,nos objets avec leurs attributs.Là, si je fais ça, j'étais bien à « true ».Après, si je fais un…Si je crée une nouvelle personne et que…Si vous voulez garder le mien, peu importe.
00:09:01 :J'en juche quelques lettres.Il est à « false ».Ça, c'est un petit truc sympathique aussi.On va continuer.Il faut savoir aussi qu'avec Data Class,vous pouvez avoir des champs par défaut.
00:09:19 :Par exemple, vous pouvez avoir un âge par défaut.Par exemple, un âge.Là, vous avez votre champ par défaut.Rien de fou.Maintenant,ce qui est très sympa, c'est qu'on peut avoirun champ calculé.
00:09:37 :Par exemple, je vais mettre un exemple.C'est pas long, si j'ai un cercle.Alors,ici, on a un float.OK.Et ici, pour l'air qui est là,on va avoir un float.
00:09:53 :Et on va faire…Ici, utiliser Field.On va devoir l'importer.Et vous allez voir pourquoi.Field, à quoi ça sert.Et en fait, avec Field,ça permet de faire en sorteque ce ne soit pas un paramètredans le constructeur unique.
00:10:13 :Ah, attendez, il y a un problème sur Doctrine.Je me dépêche tout de suite.Vous avez accès au site Doctrine, là ?C'est juste ceux qui sont connectés ou pas ?
00:10:25 :Je n'ai pas bien compris, pardon.Vous avez accès au site Doctrine, là, ou pas ?Oui, pas de souci.OK, c'est bon. J'ai reçu une alerte,
00:10:34 :mais en fait, c'est fausse alerte.OK, mieux.Excusez-moi.Donc je disais, en fait,si vous utilisez ici Field,vous faites un initégal à false,en fait, ici,Réa ne sera pas dans le constructeur init.
00:10:52 :Voilà.Donc vous voyez, en fait, c'est vraimentassez cool d'utiliser notre Atlas,parce que c'est vraiment très simple.Et donc, ici,pour faire mon champ calculé,je vais pouvoir utiliser une méthode.
00:11:06 :Je ne sais pas si je l'ai ici.Je ne la vois pas.Je crois que c'est post init.Voilà, ça va être ça.Post init.
00:11:18 :Voilà, c'est ça.Et donc, cette méthode,quand vous l'utilisez,on n'a pas mis en constructeur le Réa,sauf qu'ici,on fait été égal à,donc j'arrondis un peu, 3.14
00:11:32 :foisself.radiuset c'est plutôt carré,par exemple.On s'en fiche un C.Et là, ici, maintenant, si je faisC est égal à circle,mon radius, je ne sais pas si je mets 2.
00:11:48 :Bon, c'est un faute, normalement,peu importe. Et ici, on va faire un printdeprintde C.Réa.J'espère que je n'aurai pas de bug.
00:12:02 :Voilà, ça s'est calculétout seul. Donc, avec uneavec une data class, en fait, vous pourrez, comme ça,vous créer des champs calculés.Est-ce que ça, tout le monde le savait ou c'est des choses que vous découvrezou pas ?
00:12:16 :Le fil d'init, je ne l'avais jamais utilisé, en fait.Moi, je le découvrecomplètement, les data class.Moi aussi,je découvre.Moi aussi, le post init,je ne l'avais jamais utilisé.
00:12:32 :OK.Tant mieux.C'est utile.En fait, ce que je disais, je ne sais pas si pour ceux qui l'utilisent,mais moi, perso, je les utilise.
00:12:42 :Ça a dû arriver une fois, peut-être.Après, je fais beaucoupde Django aussi, doncc'est pour ça.Avec Django, je n'utilise pas les data class, maisje vois des cas vraimentoù ça peut être très intéressant d'utiliser.
00:12:56 :Moi, par exemple,j'ai fortement utilisé dans un projet,comme un projet de forensic.En fait, à chaque fois, tu as des fichiers,tu as des donnéesqui reviennent. En fait, on cherche plus à manipuler
00:13:08 :à chaque fois qu'on crée un objet concernantle fichier. On cherche plus à manipulerle type, la date de création du fichier,tout un tas d'informations comme ça.
00:13:16 :Et c'est vrai que pour créerdes data class, à chaque fois qu'onparcourt un fichier,c'est quand même beaucoup plus pratique de manipulerl'objet comme ça que de faire une classeclassique.
00:13:28 :Ben ouais, c'est clair.Merci pour ton expérience, parce que c'est cool.Je l'utilise en mode pro.En fait,c'est là qu'on voitque Python fournisse un nombre d'outils,c'est un truc de fou. Là, j'étais à la Python,
00:13:44 :on en parlait avec des gars, et ils disaientlimite quand tu as besoin de faire un truc,tu peux trouver presque une fonction,un module pour tout.
00:13:52 :C'est assez rapide de développeravec Python.Euh...D'ailleurs, la Python, pour ceux qui veulentla faire, je la conseille, c'est vraiment très cool.C'est très très cool.
00:14:04 :Du coup, je ne sais plusce que je voulais faire.Alors, attendez, je voulais faire un truc.Euh...Vite fait, dans mes commits...J'ai fait celle de 2018à Lille. Ah, sympa !
00:14:18 :Ouais.C'était bien, alors ?T'as bien aimé ? Ah oui, oui.Faut le faire completpour réserver un hôtel et tout.Faut vraiment...Faut vraiment le faire complet.
00:14:32 :C'est à faire.Ouais, ouais, je vais bien te croire.Je vais bien te croire.Euh...C'est vrai que...En fait, j'ai fait qu'une journée.Parce que j'étais speakerle samedi après-midi.
00:14:48 :Et en plus, j'étais en vacances, donc j'ai pu venir que le samedi.Et le peu que je suis resté,c'était cool.Euh...Du coup, j'étais quoi sur ce calculer ?
00:14:58 :Est-ce que je peux...Est-ce que je vais en parlermaintenant ?J'aurais besoin d'autre chosede vous montrer.Je pense que c'est la dataclass.Euh...
00:15:14 :Ouais, en fait, je finirai par çaà ce moment-là.On va commencer.Avec les dataclass,vous pouvez faire aussiquelque chose de très sympathique.À chaque fois,je suis là, j'ai mon cercle.
00:15:30 :Je peux très bien faire unC... Je ne sais plus ce que j'avais dit, c'est le radius.J'avais mis à combien à la base ? A 2.
00:15:36 :C'est égal à 3.Ici, il n'y a pas de problème, ça fonctionne.Ou pas. C'est bizarre.Attendez. Euh...Je ne crois pas que ça fonctionnesi je fais comme ça.
00:15:48 :Je pense que c'est notre classe.Si je prends une classe,on va repartir sur une classe personne.Et si on a un nameen str,si je fais1, c'est égaleà personne.
00:16:04 :Et si je fais ici,je ne sais pas, je vais... Hop !Et si je fais un print.Ppoint name.Là, je faisP point nameest égale à...
00:16:20 :Euh...Je ne sais pas, on s'en fout, on va mettre au hasard juste G.Donc là, voilà.J'ai bien changé mon attribut.Ce qu'il est possible de faire avec une note atlas,c'est delimitabilité. Donc par exemple,
00:16:34 :au niveau de votre décorateur,il faudra couperun paramètre ici.Frozen.C'est un peu bordel. Tac.Et là, normalement, si j'essaie de modifier...Voilà, j'ai une erreur.
00:16:48 :Je pense que ça,pour ceux qui l'utilisent, vous le devez connaître dans le Frozen.Oui, j'avais déjà vu, maisj'ai jamais utilisé. C'était pas dans l'intérêt
00:17:00 :dans lequel j'utilisais l'atlas.Ok.Donc, au gros, il faut savoir quevotre instance, vous pouvezl'utiliser.C'est ce que j'ai trouvéassez sympa.Ensuite,il y a... Ah ouais.
00:17:20 :Il y aquelque chose que je voudrais vous montrer avecces orders.Donc par exemple,je vais garderma personne ici.Je vais avoir son nom. On va rajouter
00:17:36 :l'age.On vapas garder, on va pas l'afficher, ça sert à rienpour l'exemple. Tac.Donc ici,il est 30.Allez, on va dire que j'ai 25 ans.
00:17:52 :Je vais en créerun deuxième.P1.Et là, il est pas content parce qu'il ne le reconnaît pas.Donc, ici,ce que je peux faire,par exemple,peu importe,on change un peu.
00:18:16 :Vous pouvez utiliserorder,qui par défautest à false.Et en fait,ça permet de comparerles instances entre ellesavec, alors je vais vous montrer,avec lessupérieures,on peut être inférieure, inférieure ou égale.
00:18:38 :Vous pouvez comparer vos instancescomme ça.Donc,pour ça, il vous faut du coupce paramètre qui soit à tout.Et maintenant, si je faisprintP1supérieur à P2,à P2,il va d'abordaller chercher dans leparamètre attribué, après aller chercher dans le deuxième.
00:19:06 :Donc là, si je lance,il met à false.Et si jamais, en fait,vous n'avez pasle order, ici,si je relance, normalement,voilà, ça ne fonctionne pas.
00:19:22 :Donc, en fait,le order va vraiment vous permettrede pouvoir utilisercessupérieures égales, égalesavec vos instances de classe.Donc, la comparaison,en fait, elle va se faire sur tous les champsdans l'ordre de déclaration.
00:19:42 :Après,je crois que vous pouvez en plus,alors ça, j'ai un doute,je ne l'utilise pas assez.Est-ce que je me l'étais écrit quelque part ?
00:19:56 :Et en plus,oui, c'est ça. En fait, si vous faitesensuite une liste,ça, je me l'étais trouvé, ça, c'est cool.Bon, je ne sais pas dansquelle utilisation il faut en avoir, là,dans l'immédiat, maissi vous avez une liste,je ne sais pas, de vos...
00:20:14 :de plusieurs instances, est-ce que je n'en ai pas copié une ?Oui, si. Je vais en copier une, qui est par là,que je m'étais écrite une fois.
00:20:20 :Tac.Hop.Donc là, j'ai plusieurs instances.Ah.Hop.Salut.Et là, ce qu'il est possiblede faire, en fait,sorted,vous pouvez faire unsorted.
00:20:50 :Hop.Et en fait,ça va aller, vous triez ça,vous allez voir, tac.Donc là, je répète,il commence par trier dans l'ordre des déclarationsde vos attributs.
00:21:04 :Et voilà, ici, il va aller chercher,donc là, j'ai bien le A en premier, le N,le A,le B, je veux dire,le C.
00:21:14 :Et donc,pareil, si j'enlève ça,il ne pourra pas vous les trier.Donc voilà,donc là, il est possible, du coup,d'utiliser leorder à true. Par défaut, il est à
00:21:30 :false. Et,il y a une chose que je voulaisvous montrer aussi avec ça.Tac.Qu'est-ce queje vais prendre par exemple ? En fait,
00:21:44 :il faut savoir qu'il est possibled'utiliserle déclare des attributs, mais de classeavec. Donc pour ça,il vous faut, c'est avec typing,il faut ça, avec typing, vous importezici,classe var.
00:22:00 :Et donc,bon là, on va prendreOK, c'est basique,ma classe. Et en fait,donc j'ai monattribut d'instance, comme on fait à chaque fois,OK. Donc là, je l'ai en int.
00:22:16 :Et,pour bien distancier, on va faire ça,j'ai mon attribut de classe.Il faut faireun classe var, ici,donc là, vous typez avec classe var,et, commenton fait déjà avec, comme ça,et là,je crois qu'on peut le mettre par défaut,à 0.
00:22:38 :Et donc ici, si je me faisune instance, donc si je fais par exemple,c est égal àma classe,c'est quoi, c'est en intque j'ai mis, donc 10.
00:22:50 :Hop, et là, si je fais un print,c'est .instanceAttribute.Il n'y a pas de problème, donc c'est comme avecune classe normale. Je peux aussi
00:23:02 :faire, bien sûr,une classeparce que toutes les instances vontpartager cet attribut, qui est à 0par défaut. Mais si je faisdu coup,ma classe .
00:23:18 :instanceAttribute, évidemment,ça ne fonctionnera pas,parce qu'on est sur un attribut d'instance.Mais si je faisun classeAttribute,ici, ça fonctionne,parce qu'on est bien sur un attribut de classe.
00:23:32 :Voilà, c'est pour vous montrer que, même si c'estdéclaré, en fait,au même niveau que mon attribut d'instance,et que par défaut,toutes vos attributsvont être considérés comme desattributs d'instance, vous pouvez très biendéclarer des attributs de classeavec classe barre.
00:23:50 :Voilà, en gros, pour faire un petit toursur lesdataclasses.Est-ce queça va pour vous ou pas ?Est-ce que vous avez appris des choses ?
00:24:04 :Sur la façon de déclarer un attributde classe, est-ce que ça, vous le saviez ?Est-ce que vous le découvrez ?Est-ce que çavous est utile ?
00:24:14 :Le fil, je ne sais pas,ça peut être sympa.Pour ceux qui passent au TOSA,du coup,je ne sais pas.Stéphane, tu as eu des questions là-dessus ou pas,sur les dataclasses ? Aucune question sur
00:24:34 :les dataclasses. Ça ne te dit rien, moi non plus.Que ce soit à l'évaluationou à la certif,je n'ai rien vu passer.Tu n'as rien vu passer ? Ouais.
00:24:44 :Moi non plus.Mais bon, sur 500 questions, on n'aforcément pas tout eu.Ça ne m'étonnerait pas qu'elle soit dans leTOSA.Avec Python, c'est bon à savoir.
00:24:56 :C'est pas ce qui a étéle plus connu, mais c'est quand même assez connu.Nickel, Arcel, tant mieux.Tant mieux, tant mieux.Je crois que j'ai vu passer une question surle fait de rendreles attributs optionnels.
00:25:14 :Alors, attends.Sur mon petit écran.J'ai un peu de bruit autour de moi,donc je ne peux pas trop parler.Est-ce que c'est possible de rendre un attribut d'instanceoptionnel avecle module typing et optional ?
00:25:36 :Ouais, tu peux.Voilà ce que j'allais te dire.Donc là, j'ai mon class var,maissi tu veux,si tu viens de le dire,si tu as ton attributici,tu vas utiliser dans typing,optional.
00:25:56 :Et effectivement, tu peux faire ça.Utiliser optional.Il faut...Attends, je vais l'utiliser.Voilà, c'est ça.Et donc, tu peux te mettreici, bien sûr.
00:26:14 :Donc ouais, tu peux avoir un attributoptionnel.Sans aucun souci.J'espère que j'ai réponduà ta question, mais en fait,t'avais presque répondu en posant la question.
00:26:26 :Qu'est-ce que j'allais dire ?Est-ce qu'il me reste...J'ai...Cet après-midi,je vais peut-être vous le montrer, je ne sais pas si je l'ai là.
00:26:40 :Est-ce que j'ai...Est-ce que j'ai...Une petite techniqueassez marrante, pour finir là-dessus.Bon, ce n'est pas le script du siècle.Est-ce que je peux l'avoir...
00:26:52 :Est-ce que je l'ai mis...Attends,je vais voir ce qu'il y a sur moi.Est-ce que j'ai en photo...C'est le truc que tu m'as envoyédans Discord.
00:27:06 :Oui, c'est bon, je l'ai sur...Mon téléphone, du coup, je vais l'avoir ici.Oui, c'est ça, Stéphane.C'est où, les photos, là-dedans ?Je ne sais pas.
00:27:16 :Je ne sais pas si vous allez bien voir aussi.Oh, mon Dieu, non.Ah, puis c'est...Ah, ça charge. Je peux grossirsur un Macles photos, ou pas ? Je peux zoomer dessus ?
00:27:28 :Hum...Si tu pinces avec le trackpad, normalement, oui.Ouais.Tu mets deux doigts et t'écartes.Ah, sinon, je vais avoir...Ah, ok.Ok.Mais le mieux, je pense quece serait, avant quand même d'être terminé,je vais essayer de faire un truc...
00:27:48 :Attendez, je vais tenter un truc.Hop.Pour éviter de me retaper.Je pense que ça marche.Je vais essayer de l'envoyersur une IA, voir.
00:28:02 :Euh...Ouais, ça a l'air de fonctionner.On va essayer ça.Hop.On va quitter l'état classe,c'est juste pour finir sur un truc assez rigolo.
00:28:14 :J'ai découvert un truc aujourd'hui.Ok, alors là, il me l'a... Ouais, c'est un peu gros.Et quand je le lance,ça me fait bien mon...
00:28:22 :Voilà, c'est ça. Donc, en fait,en gros,c'est l'anecdote toute bêtequi n'est pas intéressante, mais ce n'est pas grave.On fait le secret de Santa,et à chaque fois, il y a toujours de la triche.
00:28:34 :Et du coup, Tannay, il a dit, je vais conduire un script,on va balancer les noms dans mon script,et comme ça, ce sera strictement ce qui est dans le script.
00:28:40 :Voilà. Tout simplement.Donc, on voit bien, ici, que j'ai ma liste de noms,que le premier nomqui est ici...Alors, c'est grossi, j'ai vraiment du mal.
00:28:50 :J'ai le premier nom qui est ici,et le dernier nom de la liste, qui est là.Donc, j'ai bien le dernier qui va apparaître à la première.
00:28:56 :En fait, ça...Ça fonctionne à la queue, quoi.Ici, je fais la boucle.Et donc,il y a un truc qui est très sympa,c'est que dans ma compréhension de liste,pour récupérer,en fait,grâce au modulo,en fait, j'avais commencé à le faireavec une condition en plus,
00:29:18 :et finalement, pas besoin,parce que grâce au modulo,vous pouvez récupérerla première personne, en fait,à votredernière itération.Parce que si vous faitesi plus 1modulo la longueurde votre liste,forcément,ça va être égal à 0.
00:29:44 :Donc, vous récupérez tout le premier élément de la liste.Je ne sais pas si vous l'avez déjà...Enfin...En gros, si vous faites un...Si je fais, par exemple,unmodulode 7,là,il est bien égal à 0.
00:30:04 :Donc là, en gros, arrivé ici,à la fin de monitération,le i plus 1 va être égalen gros à lenNames,et donc ça va me renvoyer 0,le premier élémentde ma liste.
00:30:22 :Et le but, en fait, c'était quela personne qui est icielle offreà la personne qui est ici.Et donc,ici, je récupère bien avec lenI,mon itération,cette personne-là, à la fin de maboucle. Et
00:30:42 :ici, vu queça va me renvoyer 0, une fois que je suis à la finde mon itération, en fait,ça va récupérer la première personne.
00:30:50 :Je ne sais pas si quelqu'un connait cette petite techniqued'utiliser le modulo pour faire ça ou pas.Ici, c'est assez clair ou pas ?Parce que ce n'est pas évident au début.
00:31:04 :Personnellement, je ne connais pas du tout.Merci.C'est normal,le même bol de modulo, ça me donne un peu mal au crâneà chaque fois.
00:31:18 :Mais en gros, si vous faitesici, par exemple,là, ça va être la longueur,si elle est de 7, et que j'ai un moduloqui est de 0,ça va être la longueur.
00:31:32 :Ça va être combien si elle est de 7 et que j'ai un moduloqui va être de 2 ?On s'en fiche, je mets au hasard.
00:31:40 :Et ça me renvoie 2.Donc, en fait, ici,i plus 1modulo de la longueur,tant que c'est inférieur à la longueur de names,je vais bien récupérer les élémentsdans ma liste, à leur position.
00:31:54 :Donc, i plus 1 modulo de l'n,si c'est égal à 1modulo de 7,ça va me renvoyer 1,i plus 1, si c'est égal à 2 modulo de 7,ça va sûrement me renvoyer 2,mais arrivé ici, dès que ça sera égal à 7,ça va me renvoyer 0, donc à la fin,
00:32:10 :ça va bien me récupérer le premier élément de la liste.En fait, tant que i plus 1n'est pas égal à la longueur de la liste,ça se renvoie à lui, i plus 1,et quand c'est égal à la longueur de la liste,ça renvoie à 0, du coup, tu prends le premier élément.
00:32:22 :En fait, ça permet de bloquer la boucle.Tout le long, tu vas offrir,lui, il offre à lui,ainsi de suite.Une fois que tu arrives à la fin, lui, il offre à lui,et après, boum, lui, il offre,et c'est là que ça va être égal à 0,
00:32:36 :et du coup, il va offrir à lui.Voilà.Bon, c'est pas le script du siècle,c'était juste le petit truc fun pour vous montrer,parce qu'en soi,il y a beaucoup plus efficace de faire çaavec un zip.
00:32:50 :Là, je pense que j'ai deux entrées à chaque fois.Ouais, bon, c'est pas ce qu'il y a de plus génial,on va dire,mais en fait, j'étais content de mon petit truc,là, avec le laine, ici,dès que ça fonctionnait, du coup,vu que j'étais content de connaître ça,
00:33:04 :je vous le partage.Je n'avais jamais pensé à cette façonde l'utiliser comme ça, pour ça.Donc, voilà.En fait, si je peux me permettre,je pense notamment à Christophe,qui nous signerait, qui commence.
00:33:18 :Ça, c'est exactementle type de type d'exercicequ'il faut se forcer à faire au jour le jouravec Python, et c'est ce qui le rendra plus à l'aiseavec Python. En fait, même pour un truc
00:33:28 :qui peut paraître simple,entre guillemets, ou pas forcémentayant une utilité transcendanteen termes de programmation,tout ce qu'on peut essayerd'automatiser comme ça par du Python,même juste pour le feu, mais c'est pour le plaisir d'avoir fait,il faut essayer de le faire, c'est ça qui va rendre
00:33:44 :vraiment de plus en plus à l'aise avec le langage.Ouais, clairement, ouais.Au début, je pense que c'est important, ouais.De toute façon, Christophe,tu verras, on en a parlé l'autre jour,sur Dockstring,t'as plein d'exercices, et quand tu vas tout faireà la fin, t'inquiète pas, t'auras déjà pris du niveau.
00:34:00 :Si tu fais tous les niveaux, y'a aucun problème.Donc ça te fait fairece genre de petits exercices tous les jours.Sur Dockstring, celui-là, il y est pas exactement,mais t'as plein d'exercices différentsavec des classes,des algorithmes, et ainsi de suite.
00:34:14 :Donc, voilà.OK.Pour l'instant, je suis toujours encore motivé.Ouais.Mais c'est vrai que c'estchaud au début, quand même.Ouais, ouais, c'est normal. Bon, puis là, ce que je montre,
00:34:28 :c'est pas forcément le plus évident. En plus, j'ai fait une compréhensionde liste. J'aurais très bien pu laisserune liste, une compréhension,une boucle normale pour décomposermieux les choses.
00:34:38 :Et en plus, c'est peut-être pas ce qui ale plus optimisé ce que j'ai fait, mais c'était juste pour le fun.Tu vois, en fait, là,je faisais pas ça dans le but d'avoir un structure optimisée.
00:34:46 :C'était juste pour m'éclaterpour le boulot, quoi.Avoir un truc qui marche.Voilà, c'est ça, un truc qui marche.Tu vois, le soir, par exemple, quand t'as remarqué qu'il y avait plusieurs filmsqui se passaient intéressants, tu fais le script pour déciderquel film tu vas regarder. Au début,
00:35:00 :le temps que tu écris le script, le film est fini.Et après, tu regardes le filmquand t'as pris de la compétence.Ouais, c'est cool. J'aime pas trop regarder
00:35:10 :les films, mais je vais choisir autre chose.Il y a plein de trucs.C'est pas que j'aime pas, mais c'est pasma passion, on va dire.
00:35:20 :Star Wars, tu vois, Star Wars,après, le reste, c'est plus compliqué.C'est peut-être intéressant de faireun nouvel ordre pour choisir dans quel ordrevoir les différents épisodes.
00:35:30 :Ouais, ouais.Franchement, je suis bien motivé.Il faut que je fasse encore plein d'exercices, tout ça.Mais c'est vrai qu'au début,en fait, quand je vois, tu sais,un nouvel exercice, moi, je suis là,j'ai un peu la flemme de commencer,mais une fois que tu commences,là, ça part vraiment dans...
00:35:50 :Enfin, j'y arrive.Après, bon, ça reste du code trèsdébutant, maisc'est motivant d'y arriver. C'est ça qui est bien.Ouais, carrément.L'important, c'est que ça marche.
00:36:02 :Ouais, c'est ça.Surtout au début.Au début, après, quand t'es dans le monde proou que tu veux vraiment être dans le monde pro,c'est bien aussi d'optimiser, maisaprès, c'est pour ce que tu veux, mais l'optimisation,je sais pas, par exemple,si tu fais du lango après, c'est pas forcément des algorithmes.
00:36:18 :S'optimiser tes requêtes, c'estdifférentes optimisations, quoi, maisaprès, t'as beaucoup l'IAqui aide maintenant aussi pour optimiser.Donc, voilà, je sais pas sije l'ai là... Non, bah, je me changerai plus tard.
00:36:34 :Bon.J'ai des petits exercices à faire. Là, j'en avais fait un.Quand j'avais commencé à faire le Toza aussi, j'avais crééune application qui allait chercherles derniers films qui sortaient au cinéma, en fait.
00:36:44 :J'avais fait ça pour utiliserdes modules de base, pour Python,avec URL libre,ou je sais plus quoi.Là, je l'ai pas là, sur moi.
00:36:54 :C'est pas grave, j'irai la prochaine fois.Mais voilà.J'espère que ça vous a plu, en tout cas.On a bien balayé lesdataclasses, j'ai appris des petites choses.
Aucune occurrence trouvée pour « ».
00:00:09
Introduction aux dataclasses
00:01:18
Contexte et introduction des dataclasses en Python
00:02:50
Création de classes avec dataclass
00:06:06
Méthodes générées automatiquement et comparaison d'objets
00:09:59
Champs par défaut et champs calculés
00:15:16
Utilisation de frozen pour l'immutabilité
00:17:22
Comparaison et tri d'instances avec order
00:21:02
Attributs de classe avec dataclass
00:28:15
Exercice pratique: Secret Santa avec modulo