Session du 20 mai 2025 à 21h00
Librairie Standard & Modules
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 les classes et dataclasses Python
Introduction pas à pas aux classes Python, à leurs attributs et méthodes, avec une mise en perspective des dataclasses.
00:00:00 :Ok, allez c'est parti. Alors déjà bonsoir à tous, s'il y en a que je n'aurai pas saluélors de l'arrivée. Alors ce soir ce que je vous propose c'est qu'on va revoir un petit
00:00:14 :peu les basiques des classes en Python, donc le terme même de la PO Python. Et donc onva essayer de revoir ça un petit peu en détail. Et à la fin je vous proposerai un
00:00:26 :petit lien avec les data classes, une petite comparaison entre les deux. Est-ce que dansvotre progression vous avez déjà plus ou moins attaqué la PO, donc la programmationet l'interrogation ? Oui, c'est bon pour tout le monde ? Je n'ai pas dit de gros mots ? Ok,
00:00:54 :alors déjà premièrement, est-ce qu'au niveau de la taille d'assichage, ça vous semblecorrect pour vous voir à l'écran ? C'est bon pour tout le monde ou il faut que je processe
00:01:17 :un peu ? Oui, c'est bon. Alors, la PO, la programmation et l'interrogation, le cœurde tout ça c'est les classes. Je vais vous écrire une petite classe rapidement, et on va un petit
00:01:31 :peu décortiquer tout ça pour revoir certaines choses basiques. Donc on va se faire une classeétudiant. Donc voilà une classe assez simple, assez classique.Qu'on va retrouver régulièrement en Python. Au niveau des classes, il y a 4 concepts qui sont
00:02:22 :liés. Donc déjà, comme je vous ai dit que c'était le cas de la programmation d'objets,c'est l'objet. L'objet c'est vraiment une instance de quelque chose, et c'est très au cœur de Python
00:02:39 :tout ça. Par exemple, une variable peut être un objet. Généralement on ne va pas la définir commetelle, mais c'est vraiment pour vous remettre au plus bas du truc, l'objet c'est toute entité quipeut contenir une ou plusieurs valeurs. La particularité des classes, ce sont des objets
00:03:03 :qui ont aussi différentes sous-catégorisations. Donc la première c'est l'attribut. L'attribut,c'est ce qui va permettre de relier une valeur à une variable. C'est à dire que la classe va
00:03:20 :avoir plusieurs variables qui sont définies et qui vont obtenir une valeur et qui vont être appeléesdes attributs. Ensuite, on a des méthodes. Les méthodes pour une classe, ce sont des actions qui
00:03:40 :pourront être réalisées par l'objet. Donc là, dans la classe que je vous ai mis, typiquement,qu'est-ce que vous me définiriez comme étant des attributs ? N'hésitez pas à ouvrir le micro parce
00:03:52 :que là, comme la configuration, je suis obligé de prendre, je ne vois plus les chats. Donc nemettez pas forcément des messages. N'hésitez pas à ouvrir le micro et à parler. Vous n'êtes pas
00:04:04 :sur un cours magistral. Dans la classe étudiant que je vous affiche, est-ce que vous sauriezme définir ce qui pour vous sont les attributs de la classe ? Oui, nom, prénom et âge. Voilà,
00:04:19 :ce sont tous des attributs de la classe. C'est-à-dire, c'est des valeurs dans lesquelleson va donner des variables lors de la création de l'objet. Donc lorsque je vais créer, par exemple,
00:04:33 :ici, mon premier étudiant, on va l'appeler étudiant 1. On va faire très simple. Pour ça,je vais devoir appeler ma classe, lui donner un nom, un prénom et un âge. Là, comme j'ai
00:04:53 :défini ma classe, ce qui va se passer, c'est que si je fais ça, si je n'ai pas d'âge,je vais avoir une erreur parce qu'il va lui manquer une variable d'ici. Donc ça, c'est
00:05:07 :comme avec les fonctions. C'est pour ça qu'on a des fois un petit peu de mal au début pour fairedes distinctions entre fonctions et classes. C'est-à-dire que ça va se créer de la même
00:05:15 :manière, ça va s'utiliser quasiment de la même manière, une fonction et une classe,sauf que ça n'a pas la même finalité et ça n'aura pas forcément les mêmes effets. Lorsque
00:05:23 :vous créez une classe, ici, la première chose à retenir, c'est que là, vous voyez, on a troisattributs qui sont demandés à la création. Donc là, si je mets pas l'âge et que je lance mon
00:05:36 :script. Oui, d'accord, j'ai un petit souci. Attendez, je vais régler ça rapidement.J'ai mon ZSH qui s'est mis à jour. Il n'y a plus de problème. On va fermer celui-ci.
00:05:59 :Comme on dit, les aléas du direct. Ok, ça va aller. Donc, je vais lancer ma classe. Et là,qu'est-ce qui se passe ? Il me dit qu'il y a une erreur. Parce qu'en fait, du coup,
00:06:17 :il manque un argument positionnel. Est-ce que vous êtes à l'aise avec cette notiond'argument positionnel ? Oui. Est-ce que c'est bon pour tout le monde, les arguments positionnels ?
00:06:31 :Oui. Ok. Alors, selon vous, qu'est-ce que je devrais faire dans ce cas, puisque vous connaissezça, pour que je puisse créer mon étudiant en mettant juste le nom et le prénom ? Soit tu passes
00:06:48 :un troisième argument à l'étudiant, à ton instance, ou alors tu lui mets, ou dans ta classe,tu mets directement une valeur par défaut. Voilà. Ok. Donc, on est bon. Les arguments
00:06:59 :positionnels, c'est bon. Donc, si je mettais âge égale 18, par exemple, ici, et que je lance monscript, plus de soucis. D'accord ? Donc là, au niveau de la création de l'objet, puisque l'étudiant,
00:07:15 :c'est bien un objet par rapport au concept que je vous ai rappelé tout à l'heure, l'étudiant0.1, en termes de Python, c'est vraiment un objet. Il va encapsuler avec plusieurs valeurs. La
00:07:30 :création d'objets, ça fonctionne vraiment comme une fonction. Soit, suivant le nombre d'argumentsqu'on a, on doit mettre exactement le nombre d'arguments positionnels, soit si on prévoit desvaleurs par défaut, et qu'on met des arguments, par exemple, comme là, âge, j'ai mis à 18. Sinon,
00:07:46 :si on ne fait pas ça, je suis bien obligé de fournir une valeur pour ma classe. Ok ? Maintenant,concernant les attributs, du coup, si, mettons, je veux faire ça. Alors, je vais laisser ça
00:08:15 :vide volontairement pour l'instant. On ne va pas se préoccuper de la valeur qu'il va prendrepour l'instant. Est-ce que je peux créer cet attribut-là ? Et si je veux le créer,
00:08:24 :qu'est-ce que je dois faire ? Il y a deux options. Tu peux le créer et mettre dans le unit unadresse. Voilà, oui, ça c'est la première option. Et quelles sont les autres options que je peux
00:08:42 :avoir ? Non, tu ne l'initialises pas et tu l'initialises après. Alors, comment je vais faire ça ?Alors, moi, ce que je crée, c'est celle pour adresse égale non, et après j'attribue une...
00:08:58 :Par exemple. Alors, on peut soit mettre un non, soit mettre un texte vide, peu importe. Ce que jeveux vous amener sur ce point-là, c'est que tous les attributs que vous allez créer dans votreunit, vous n'êtes pas nécessairement obligé de les mettre en argument dans la fonction init. Ok ?
00:09:18 :Vous pouvez créer autant d'attributs que vous voulez ici. Il s'agit aussi de l'intérêt desclasses, sans forcément utiliser des valeurs, ou il pourrait y avoir une valeur par défaut. Par
00:09:30 :exemple, on va prendre un exemple qui vous semblera beaucoup plus concret. On va mettre icidate naissance. Je vais donc rajouter mon attribut ici, self, date naissance. Je vais faire simple
00:09:46 :parce que je n'ai pas envie de compliquer tout ça avec du datetime. On sait que... On va l'appelerannée naissance, ce sera plus simple parce que sinon... On va faire une cote mal taillée, l'idée
00:09:59 :c'est que vous contrôliez le principe. Hop, je remonte ici. Hop, ok. Hop là, et je remonte ici.Vous allez voir, ça va même être très magique du ce qu'il y a après. Et je pourrais très bien dire
00:10:22 :self âge, égal 2025, moins self année naissance. Ok ? Alors, je vais utiliser la méthode, on va enreparler après, mais c'est juste pour que vous voyez l'astuce. Par exemple, on va mettre 1984.
00:10:45 :Et si je fais étudiant1.seprésenter, comme vous pouvez le voir là, j'ai htutilisé. Hop, il m'a biencalculé automatiquement l'âge de mon objet. D'accord ? C'est-à-dire qu'en fait, les attributs,
00:11:07 :vous pouvez avoir une série d'attributs de base que vous définissez comme paramètres dans votrefonction. Donc là, on a mis nom, prénom, l'année naissance. Et derrière, vous pouvez créer d'autres
00:11:18 :attributs en vous basant sur les valeurs des premiers attributs que vous avez mis en paramètres.Ok ? C'est-à-dire que ce que je veux vous amener à saisir là, c'est que l'attribut dans une classe,
00:11:29 :c'est pas forcément une valeur que l'on reprend de ce qui est mis dans l'unit, mais c'est bien unevaleur qu'on définit. Après, alors, soit elle vient directement en termes de paramètres dans l'unit,
00:11:39 :soit vous pouvez faire un calcul comme j'ai fait là. On pourrait imaginer aussi que, par exemple,vous passez la valeur année de naissance dans une autre fonction ou une méthode de la classepour renvoyer un résultat. Enfin, on peut imaginer tout un tas de choses. Le truc, c'est qu'un attribut
00:11:55 :doit pas forcément être un paramètre qui est défini là. Pour ceux qui avaient déjà joué avecles classes, je pense que vous vous êtes dû poser la question. Ouais, ben c'est bien beau. Alors,
00:12:04 :je mets mon unit, je mets nom, prénom, année de naissance. Et après, je suis obligé de remettreseul nom égal nom, seul prénom égal prénom, seul année de naissance égal année de naissance. Je
00:12:12 :pense que tous, plus ou moins, à un moment ou à l'autre, vous vous êtes dit, bon, c'est bien,mais c'est un peu fastidieux aussi. C'est pas très pratique. Et en fait, la raison, elle est là,
00:12:21 :c'est qu'un attribut, en fait, il n'est pas forcément un paramètre et vous devez le définirdans l'unit. Ok ? Je vais reprendre l'histoire de mon adresse pour vous montrer un peu comment
00:12:34 :on peut manipuler les attributs. Hop, je mets un caractère, des caractères vides et je vaisdire, par exemple, étudiant, il y aura un point adresse. Il y a le 10 rue de la Paix à Paris,
00:12:50 :en brésilien, peu importe la valeur de l'exemple. Et je vais afficher l'étudiant. Hop. Voilà.Qu'est-ce que ça nous fait ? On ressort. On a bien un objet étudiant là. Alors,
00:13:15 :je vais du coup mettre point adresse. Hop. Au pilote qui m'embête. Voilà. Il me rendra bienl'adresse. Un attribut, en soi, comme je vous le disais tout à l'heure, ça va vraiment se
00:13:34 :comporter comme une variable. C'est-à-dire que vous pouvez l'initialiser avec une valeur vide,comme je viens de le faire avec l'adresse, lui affecter une valeur par la suite en l'appelantdirectement, en utilisant le nom de l'objet, en mettant un point, la valeur, le nom de l'attributet lui affecter une valeur. Vous pouvez l'utiliser pour faire un calcul. Vous pourrez vraiment faire
00:13:56 :tout ce que vous voulez avec. Ça va vraiment se comporter comme une variable de A jusqu'à Z.Est-ce que c'est bon pour vous au niveau des attributs ? Oui. Oui. Est-ce qu'il y a des
00:14:10 :questions ? N'hésitez pas. N'hésitez pas à m'interrompre au moment où j'explique. C'est untruc qui vous chagrine. Il faut tout de suite intervenir. D'accord ? Donc on va passer à l'autre
00:14:29 :partie. Ici, donc, la méthode. D'accord ? La méthode, ce sont des fonctions qu'on va créeret on va pouvoir définir une action qu'on pourra reproduire avec l'objet concerné. Donc là,
00:14:46 :c'est une méthode relativement simple, c'est se présenter. Je vais m'inspirer de ce que Thibaudprésente dans les cours. Quand il vous présente les classes, généralement, il vous parle de
00:14:54 :voiture. Donc on peut imaginer avancer, reculer, se garer, ajouter de l'essence. On peut vraimentimaginer toutes ces fonctions, toutes les actions que pourrait faire un objet. Donc en fait,
00:15:10 :les méthodes, ça va vraiment représenter les actions de l'objet. D'accord ? Ce qu'il estcapable de faire. Donc je reprends les attributs, c'est les valeurs de l'objet, les variables qui
00:15:24 :lui sont comptées dans l'objet. Et les méthodes, ce sont les actions que l'objet possède. Alors,soit vous savez tous, soit vous avez accepté l'info sans comprendre réellement. Est-ce qu'il
00:15:39 :n'y a pas un mot qui vous intéresse dans tout ça, dans tout ce que je vous ai écrit ? Un motqui revient souvent. Dans tout ce que tu as écrit ? Ouais. Il y a le self et le étudiant qui revient
00:15:58 :beaucoup. C'est le self, effectivement. Alors, self, c'est un mot-clé qu'on va utiliser,qui va être utilisé pour représenter l'objet. C'est-à-dire que là, on va prendre par exemple,
00:16:15 :on va décortiquer cet attribut-là, nom. Self.nom. Au moment où on écrit notre classe,le fait que moi, mon objet que je vais créer avec cette classe, je vais l'appliquer tout en0.1, j'en sais strictement rien. L'objet pourrait s'appeler étudiant 2, pourrait s'appeler
00:16:32 :concombre, enfin, peu importe. Self, c'est une abstraction pour représenter l'objet qu'oncréera avec la classe. Ce qui me permet, comme vous le voyez ici, de donner une valeur à l'adresse
00:16:48 :de mon étudiant 1, parce que dans la logique de programmation derrière, lorsque je vais faireétudiant 1.adresse, intrinsèquement, étudiant 1 va être représenté par le self. Par mesure de
00:17:05 :convention, on utilise self pour cette fonction. Maintenant, je pourrais choisir n'importe quel mot.On va mettre carotte à la place. Je ne sais pas si tu as les mêmes raccourcis,
00:17:28 :mais si tu sélectionnes un self et que tu fais ctrl d, ça sélectionne les suivants.Merci. J'ai du mal à enregistrer ces raccourcis de la vision studio code. Donc voilà, vous voyez,
00:17:49 :j'ai remplacé tous mes selfs par des carottes. Je lance mon script, tout se passe nickel,ça ne pose aucun problème. Donc vous voyez que le mot self, c'est vraiment juste une convention
00:18:02 :en soi. C'est juste que lorsqu'on va faire notre init, le premier mot qu'on va mettre ici,c'est ce qui va définir ce fameux self, la carotte, l'intentionnel mot qu'on pourrautiliser. Je vous montre ça pour vous montrer que c'est vraiment une abstraction. Le nom qui
00:18:21 :porte en soi n'a pas d'importance. Maintenant, lorsque vous ferez vos scripts et que vousdéploierez vos propres classes, évitez de me trouver des mots un peu tarabiscotés ou bizarres,ainsi de suite. En termes de maintenabilité de votre code et de relecture de votre code par impair,
00:18:41 :c'est déjà compliqué. Donc utilisez en priorité le self. Tout le monde utilise le self, ça ne posepas de problème, c'est un mot qui est assez clair, qu'on peut comprendre assez vite. Mais là,
00:18:54 :ce que je vous ai montré là, c'est vraiment pour que vous vous contrôliez que, bon, self,c'est vraiment juste une convention et que Python n'a rien à faire de comment vous appelez le mot.
00:19:03 :Du moment que vous mettez ici en premier ce mot, ça ne pose pas de problème. Est-ce que voussaviez cette histoire de self? Oui. Ok, impeccable. Donc une classe, lorsque vous allez
00:19:31 :la créer comme ça, il y a beaucoup de choses derrière qui vont se faire automatiquement. Parexemple, si je fais, alors normalement, si je fais ici, je mets ce petit mot magique,rep, voilà. Là, il va m'écrire la représentation, ce que vous voyez ici. Je l'ai défini nulle part,
00:20:02 :mais lui, il a créé automatiquement une fonction représentation pour afficher la classe si jeveux l'afficher. D'accord? Ça, par exemple, je pourrais le modifier. Je pourrais le faire à la
00:20:14 :marche. Je vais faire comme ça parce que sinon vous n'allez pas bien voir la différence. On varegarder le concept du string, mais sauf qu'à la place, je vais le mettre comme ça. J'enregistre,
00:20:36 :je relance. Vous voyez, dans le rep, il m'a bien mis ça à la place. Donc, il va créer le repdirectement, automatiquement. Normalement, si je fais ça, si ma mémoire est exacte, si je fais
00:20:51 :un str, hop, ça marche aussi. D'accord? Parce qu'en fait, ce que je vous ai mis dans le rep,c'est ce qu'il fait par défaut dans le str. Ok? Donc, il y a beaucoup de petites choses comme
00:21:05 :ça qui vont être créées automatiquement avec une classe lorsque vous avez créé. Donc,comme vous voyez, les classes, ça marche plutôt bien. Par contre, le petit défaut qu'on a un peu
00:21:24 :évoqué, c'est cette histoire de hint. Alors, il y a beaucoup de cas où ça sera très intéressantd'utiliser une classe comme ça. Maintenant, si le but, c'est vraiment simplement de stocker un
00:21:38 :objet avec vraiment, à la limite, une ou deux méthodes, histoire de dire que. Il y a un autreconcept de Python qui existe, qui va être la data class. Alors, est-ce que vous avez plus
00:21:55 :entendu parler de la data class ou utiliser de la data class? Oui. Alors, pour les data class,donc, d'abord, on commence par. Donc, d'abord, il va falloir apporter le décorateur de data class
00:22:31 :depuis le module data class. Alors, les décorateurs, c'est bon pour tout le monde aussi? Oui. Alors,on va faire, par exemple, avec des livres. Donc, là, par exemple, je crée, par exemple,
00:23:00 :une bibliothèque. Pour gérer ma bibliothèque, ce que j'ai besoin, c'est d'avoir les informationsconcernant le livre. À chaque fois que je vais vouloir créer un livre et éventuellement son
00:23:16 :statut. Alors, on va rajouter ici, quantité. Non, plutôt ça. Disponible. Alors, comment ça vafonctionner la data class? Comme vous voyez ici, là, je crée les attributs de ma classe et j'ai
00:23:54 :vraiment rempli tout ce qu'il faut pour le livre. Le titre, l'auteur, les publications, le genre,éventuellement les ISBN si on utilisait, par exemple, ce script dans une bibliothèque qu'onva souvent utiliser ou dans une librairie, on va souvent utiliser ça. Et l'autre information qui
00:24:09 :nous intéresse, c'est de savoir s'il y a une prod. Pour créer les attributs, c'est très simple.Vous voyez déjà, on s'approchait du fameux unit et on s'approchait également du fameux self. Là,
00:24:24 :on n'en a plus besoin. On va directement donner le nom de notre attribut et on va définir letype. D'accord? Donc, pour le titre, chaîne de caractère, l'auteur, pareil, l'année de
00:24:37 :publication annonciée, le genre, pareil, chaîne de caractère, ISBN sur le caractère. Et pour ledisponible, vous voyez qu'il y a une chose qui s'est mise. On a défini le type en booléen et
00:24:48 :on a défini une valeur par défaut. Donc, on va retrouver le même système que ce qu'on a vuavec les limites et qu'on a évoqué aussi avec les fonctions. On pourra considérer qu'au début,
00:25:01 :les premiers qui sont ici sont des arguments positionnels et que celui-là est un argumentnon positionnel puisqu'on lui a donné la valeur par défaut. Ok? On va rajouter une petite méthode,
00:25:18 :hop, et disponible. Voilà. Et on va lui dire de retourner le self tout simplement de disponible.Autant on a pu s'affranchir du self comme vous voyez sur les attributs, parce que c'est le conceptde la data class qui le permet, autant lorsqu'on va vouloir utiliser notre objet dans les méthodes,
00:25:40 :là on est obligé d'utiliser le self. Dans les data class, ce que je vous ai montré tout à l'heureavec carottes, il vaut mieux éviter parce qu'il va falloir faire une certaine manie pourdéfinir ce que c'est un self, ce que c'est plus self, ce que c'est carottes. Déjà que l'intérêt
00:25:58 :de faire ça n'est pas très grand, mais dans les data class, vous allez vous enfermer dansquelque chose d'un peu compliqué et il n'y a pas vraiment d'intérêt. Donc, pour créer mon objet
00:26:11 :à partir de ma data class, c'est exactement le même concept qu'avec les classes de base.Je vais par exemple créer mon premier livre. Livre 1. C'est un livre. Alors,
00:26:45 :qu'est-ce que je vais faire? Je vais lui donner un titre. Allez, on va commencer comme ça.Eh, c'est magique. Peter Copaillot connaît même les références des meilleurs livres.
00:27:04 :Donc, comme vous voyez là, je rentre bien mes arguments positionnels, le titre, l'auteur,l'année, la fantaisie et l'ISBL. Comme le disponible, il est défini par défaut,
00:27:21 :je n'ai pas besoin de le mettre de base. Si je lance mon script, vous voyez,tout se déroule bien, pas d'erreur. Si par exemple, je supprimais mon ISBL. Hop là,
00:27:37 :et je relance. On se retrouve bien avec la même erreur que ce qu'on avait vu tout à l'heure avecnotre classe. Il manque un argument positionnel qui est ici l'ISBL. Donc vous voyez, en termes
00:27:51 :de fonctionnement pour la création de la classe, on est exactement sur la même chose.Maintenant, on va dire que quelqu'un emprunte mon livre. Donc, pour faire ça, on va dire
00:28:07 :point disponible égale false. Et puis, il y a une deuxième personne qui arrive qui va emprunterde la mise. Donc, on va vérifier si le livre est disponible. Hop, voilà. Et là, je lance mon
00:28:25 :script. Alors oui, par contre, je n'aurais pas dû faire ça. Il faudrait finir ma méthode parceque sinon... Voilà, ça c'est mieux. Voilà, on va relancer ça. Là, il m'indique bien que le livre
00:28:51 :d'Accommodator n'est pas disponible. Parce qu'effectivement, ici, on le passe à false.Donc, comme vous voyez, la dataclass a vraiment fonctionné comme une classe. Alors, on va éviter
00:29:02 :de créer une dataclass avec des fonctionnalités, des méthodes un peu complexes parce que ce n'estpas vraiment l'objet. Et puis, quitte à vouloir rentrer dans ce genre de choses,
00:29:11 :autant faire une classe classique. Et là, vous ne voyez pas que par exemple, rapidement,pour gérer une petite bibliothèque de livres, la dataclass s'y prête assez bien. D'ailleurs,
00:29:25 :est-ce que le format de la dataclass ne vous fait pas penser à quelque chose ?Je ne sais pas si vous avez la référence. Est-ce que ça vous fait penser un petit peu à une base
00:29:43 :de données, pour ceux qui ont eu l'occasion de jouer avec ? Oui. Voilà, on est sur le conceptqui s'approche d'une base de données. C'est-à-dire qu'on va vraiment donner des valeurs par entrées.
00:30:02 :Et on va être capable de les extraire et de les manipuler par la suite. D'accord ? On serapprocherait un peu plus. Alors, ce n'est pas une base de données en soi relationnelle. Je te
00:30:12 :conseille de s'appeler Baptiste. Ce n'est pas de l'USQL ou d'Elastic ou ainsi de suite. Mais,pour donner l'image, c'est ça rapproche. C'est vraiment l'idée de la dataclass. C'est vraiment
00:30:26 :de stocker de la donnée. Et éventuellement, comme je l'ai fait ici avec l'OS disponible,par quelques petites manières. D'accord ? Et ça nous permet justement de créer des objets sans
00:30:39 :avoir à surtout faire le init ainsi de suite. Par contre, pour ce qui est de la dataclass,on n'aura pas de définition automatique de représentation. Normalement, si je fais ça,
00:31:10 :on va avoir un petit souci. Il va la définir automatiquement, mais on ne peut pas la modifier.D'accord ? Donc là, la représentation, elle existe. C'est aussi le problème de la dataclass.
00:31:29 :Ok ? Après, il va la définir automatiquement. Après, on peut dire qu'on ne veut pas qu'il ladéfinisse automatiquement. Alors là, on va aller beaucoup plus loin dans la dataclass. Vous
00:31:49 :ne vous focusez pas trop là-dessus parce que là, on arrive sur des concepts un peu avancés. Parexemple, pour un attribut, on va dire ça. Si j'importe en plus fill, on peut définir que,
00:32:19 :par exemple, pour l'auteur, je peux soit définir un champ par défaut ou par exemple dire que larep est fixée à false. Et là, normalement, si je fais mon livre.auteur, qu'est-ce qui va me
00:32:49 :sortir ? Voilà. J'ai fait une bêtise. Qu'est-ce que j'ai fait ? J'ai fait une erreur là-haut.Excusez-moi. Grèves fausses. Voilà. Ok.Et donc, on va remettre notre livre.auteur. Vas-y Baptiste.
00:33:52 :Du coup, j'ai une question parce que j'ai vu ça ailleurs, mais ça ressemble à du piton,mais ça n'est pas. Est-ce que là, sur auteur, on peut faire deux points égales et des guillemets
00:34:07 :pour que ce soit typé string ou pas du tout ? Alors là, il est déjà typé string en fait.Ouais, mais sans écrire l'astère et juste mettre une string après ? Alors, en termes de dataclass,
00:34:21 :non. Il faut le citer. C'est une contrainte de dataclass. Ok. Parce que sur autre chose,quand on fait deux points égales, par exemple, si tu mets tolkien, ça type directement en stret on ne peut pas remplacer par de l'int ou autre chose. Ok, donc là, c'est pas possible. D'accord,
00:34:42 :merci. Voilà, c'est prévu. Donc là, il me le représente là. Alors sur celui-là,c'est pas très intéressant sur la règle, mais par exemple, je pourrais mettre une valeur par défautavec l'attribut feed. Je pourrais mettre plusieurs choses par défaut. D'accord ? Donc ça, c'est bon
00:35:03 :à savoir que ça existe, cet attribut feed. Maintenant, en termes de dataclass, vous nel'utiliserez quasiment pas parce que la plupart du temps, on va préférer faire ça, par exemple.
00:35:10 :Donner une valeur par défaut comme ça. Mais dans quelques cas, ça pourra vous sortir de l'enduit.Voilà, voilà. Donc oui, les dataclass, comme tu viens de le remettre, c'est obligatoirement
00:35:27 :typé au niveau des attributs. Contrairement à la classe de base, là, on n'est pas obligé del'utiliser par la base. Voilà, voilà. Donc voilà un petit peu ce que je pouvais vous dire sur les
00:35:47 :classes et les dataclass. Est-ce que c'est bon pour vous ? Alors, la première question que j'aisurtout, c'est si c'était pas nécessairement clair pour vous au début, est-ce que ça l'estdevenu ? C'était clair pour la plupart des gens et je vous ai pas embrouillé. C'est déjà bien.
00:36:17 :Alors ça, c'est vraiment une base à connaître et à maîtriser. Au niveau de la présentationorientée objet, si vous n'avez pas trop ces notions-là au niveau des classes et commentfonctionnent les classes, les subtilités de limites, pourquoi limites on fait comme ça,vous allez être très vite embêté dans l'exploration de la partie orientée objet de Python. Donc ceux
00:36:50 :qui ne maîtriseraient pas ça à fond, je vous invite très fortement à aller travailler.Il n'y a pas de questions ? N'hésitez pas à m'aider sur d'autres sujets que ce qu'on a
00:37:08 :parlé là. Si vous avez d'autres petites questions sur Python ou sur le projet qu'on aborde là,n'hésitez pas. C'est bon, c'est bon. Non, personne s'élance. Bon, pas de soucis. Voilà,
00:37:31 :c'est ce que j'avais à vous présenter ce soir. J'espère que ça vous a plu. Pour laprochaine fois, s'il y a des sujets que vous voulez voir abordés, n'hésitez pas à me signaler.
00:37:44 :Ce que je dis toujours, c'est que ces mentorats sont pour vous. N'hésitez pas à en être acteurdans le sens où vous pouvez dire, tiens, il y a tel ou tel sujet que j'aimerais bien qu'onvoie en détail. Le but est vraiment d'essayer de vous apporter des informations qui vous
00:38:03 :intéressent, toi notamment Baptiste qui a envie de rentrer dans le jeu de la préparation de sesoffres. N'hésite surtout pas. Le but, c'est vraiment d'essayer de vous présenter des choses
00:38:14 :qui vous apportent quelque chose. Parce qu'on peut revenir indéfiniment sur un cycle de notionsde Python et ainsi de suite, mais je pense qu'avec le temps, ça devient de moins en moinsintéressant, même si le public se renouvelle. Mais à part celui-là qui a inauguré le premier
00:38:31 :live et qui les a tous suivis depuis sans exception. N'est-ce pas celui-là ? Il m'entend pas.C'est pas une bêtise, il a inauguré le premier live et il les a tous suivis depuis.
00:38:49 :Je disais, n'hésitez pas. Sur Discord, vous me trouverez sous le nom d'Utenaras. Je vousl'exclais pour ceux qui ne l'ont pas vu, je vous le mets dans le chat. On peut voir ça la semaine
00:39:18 :prochaine si tu veux, Caroline, c'est pas un problème. Je vais préparer ça à ce moment-là.Et n'hésitez pas, si vous avez des petits sujets que vous voulez voir, il y a bien sûr despréférences, surtout le live du mardi, il est surtout prêt pour la préparation Tosa, des sujets
Aucune occurrence trouvée pour « ».