- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
Céline
13 janvier 2023 - 13 janvier 2023 à 12:06
checkConversation résolue
1 réponse
Initialiser une instance
Bonjour,Est-ce qu'il existe avec python, un moyen d'avoir plusieurs méthodes __init__ à l'intérieur d'une même classe?En java nous appelons cela un constructeur et nous pouvons en fabriquer autant qu'on veut …
00:00:00 :Dans cette partie, on va voir comment initialiser des instances.Donc pour l'instant, on a créé des instances, mais on va découvrir une méthode qui s'appelle init,qui est une méthode un peu magique et qui va nous permettre, directement lors de la création d'une instance,de passer des paramètres à ces instances pour les initialiser et ainsi les définir un peu différemment les unes des autres.
00:00:20 :Puisque là, pour l'instant, la marque de la voiture, pour les deux voitures, elle est égale à Lamborghini.On aimerait bien pouvoir dire ici que la première voiture, on veut que ce soit une Lamborghini,et que la deuxième voiture, on veut que ce soit une Porsche, directement lors de la création de notre instance.
00:00:34 :Donc ça c'est possible, et pour ce faire, on va utiliser donc la méthode init.Donc on va commencer par créer cette méthode.Alors une méthode, en fait, c'est tout simplement une fonction qui appartient à une classe.
00:00:45 :Donc ça va être exactement la même syntaxe que les fonctions.Donc on va la définir avec le mot def, et cette méthode, en fait, on va la précéder et la faire suivre de deux tirés du bas.
00:00:55 :Donc ça, si vous vous souvenez bien, ça signifie en Python que c'est une méthode un peu spéciale,et c'est le cas puisque cette méthode, elle va être appelée automatiquement lorsqu'on crée une instance à partir d'une classe.
00:01:06 :Donc pour l'instant, je ne vais rien mettre à l'intérieur,mais vous voyez qu'au niveau de la syntaxe, c'est exactement la même chose qu'une fonction.Donc cette méthode init, quand on va créer une première voiture ici,eh bien automatiquement, Python va appeler cette méthode et va exécuter le code qu'elle contient.
00:01:21 :Donc ça va nous permettre, en fait, de définir une marque qui va être différente pour chaque voiture.Puisque pour l'instant, on a la marque ici qui est disponible au niveau de la classe voiture,eh bien on va tout simplement déplacer cet attribut ici pour le mettre à l'intérieur de notre méthode init.
00:01:37 :Et plutôt que de mettre une valeur qui est par défaut à Lamborghini,eh bien on va tout simplement faire comme avec les fonctions, c'est-à-dire mettre un paramètre marque ici,qu'on va passer à notre méthode init lorsqu'on crée une instance à partir de notre classe,et on va récupérer ce qu'on envoie, donc dans ce cas-ci Lamborghini, dans ce paramètre marque,
00:01:54 :et on va mettre cette marque ici dans un attribut qui va correspondre à notre instance.Donc pour l'instant, si je fais ça, vous allez voir qu'on a une erreur.
00:02:03 :Si je fais un clic droit et que j'exécute mon script,Python nous dit en fait que la méthode init, elle prend un seul argument,donc on a mis un seul argument marque ici, mais que nous, on lui en a donné deux.
00:02:15 :Donc si vous regardez ici, c'est un peu bizarre, puisque non, on n'a pas donné deux arguments, on en a donné un seul.Alors en fait, ça c'est vraiment le truc qui mélange tous les débutants au début,c'est le fait qu'il va falloir mettre un argument en premier ici par défaut,
00:02:30 :que l'on n'a pas besoin de passer soi-même.Cet argument, on va l'appeler self, et donc là encore, c'est une convention,mais cette fois-ci, c'est peut-être la convention qui est la plus suivie dans tout le langage de programmation Python.
00:02:42 :Je vous conseille vraiment de ne pas l'appeler autrement.Donc on pourrait l'appeler Paul si on veut, on pourrait l'appeler n'importe quoi,c'est en fait juste un nom qui va servir à être utilisé à l'intérieur de notre classe,mais moi je vous conseille de l'appeler self.
00:02:55 :Donc self, en fait, ça correspond à quoi ? Eh bien en fait, ça correspond à notre instance ici.Donc dans la prochaine partie, on va revenir beaucoup plus en détail sur ce self pour que vous compreniez bienà quoi il sert et ce qui se passe, mais pour l'instant, sachez juste que Python se charge automatiquement
00:03:10 :de passer notre instance ici à ce paramètre self.Et ce qu'on va faire en fait, c'est utiliser ce self pour préfixer notre attribut marqueet pour indiquer qu'il appartient donc bien, non pas à ma classe voiture,mais à mon instance que je crée en initialisant ma voiture.
00:03:27 :Donc là, en fait, vous voyez que je ne passe qu'un seul argument qui va être récupéré par le deuxième paramètre iciet automatiquement, Python va assigner à self ma voiture 1 et ensuite ma voiture 2.
00:03:38 :Donc le gros avantage de ça, c'est que maintenant, je me retrouve avec deux voitures qui ont des marques différenteset là, on va avoir un attribut qui va appartenir à mon instance, donc à chaque instance qui va être créée,donc la voiture 1 et la voiture 2.
00:03:50 :Et donc si de suite, je fais un print de la marque de ma voiture 1 et un print de la marque de ma voiture 2,vous allez voir que cette fois-ci, dès le départ, elles vont avoir des marques différentes.
00:04:01 :Donc on a bien Lamborghini et Porsche et donc c'est très pratique puisqu'on va pouvoir comme ceci,à partir d'une même classe, créer des instances qui vont déjà avoir des attributs différentsgrâce à la méthode init qui nous permet donc d'initialiser nos instances.
00:04:14 :Alors là, vous allez me dire mais à quoi donc peuvent bien servir les attributs qui appartiennent aux classes directement ?Et bien ce que je vais faire ici, c'est que je vais créer un attribut qui va s'appeler voiture crééeet que je vais initialiser à zéro.
00:04:27 :Cet attribut, je vais le modifier à chaque fois qu'on passe dans la méthode init,mais je vais le modifier au niveau de ma classe.C'est-à-dire que plutôt que de faire self ici, je vais utiliser directement voiture, donc ma classe voitureet je vais accéder à cet attribut voiture créée qui va donc être commun à toutes les instances de ma classe
00:04:44 :et je vais l'incrémenter de 1.Donc comme ceci, en fait, si après avoir créé deux instances, je print voiture.voiturecréée,je vais donc afficher l'attribut voiture créée qui appartient à ma classeet cet attribut, on l'incrémente de 1 à chaque fois qu'on passe dans la méthode init,donc c'est-à-dire à chaque fois qu'on crée une nouvelle instance.
00:05:04 :Donc logiquement, à ce stade-ci, cet attribut devrait être égal à la valeur 2puisqu'on a créé deux instances et donc on a bien incrémenté deux fois cet attribut qui appartient à la classe voiture.
00:05:16 :Donc voilà pour l'initialisation de nos instances.Donc là encore, ce n'est pas forcément très clair pour vous pour l'instant avec le self,c'est un truc assez obscur qui au début fait vraiment peur aux débutantset si on ne l'explique pas bien, il y a beaucoup de gens qui font juste vous dire
00:05:30 :Peut-être que c'est ce que vous allez faire au début sans vraiment comprendre ce qui se passe.Dans la prochaine partie, moi je vais vous expliquer précisément ce qui se passe avec ce selfen montrant un petit tour de passe-passe qui est fait par Python en arrière-planet vous allez normalement avec cette explication mieux comprendre comment est déterminé ce self.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.