CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PYTHON] problème avec héritage des classes

TreizeChats
TreizeChats
Niveau 4
15 juin 2017 à 22:08:33

Bonjour tout le monde, en ce moment je regarde comment fonctionne les classes mais je suis un peu bloqué sur Codecademy. En effet, à partir d'une classe mère Voiture, je dois créer une classe fille VoitureElectrique.

Voici la classe mère Voiture :

class Voiture(object):
    condition = "nouveau"
    def __init__(self, modele, couleur, mpg):
        self.modele = modele
        self.couleur = couleur
        self.mpg = str(mpg)
    def afficher_voiture(self):
        print "Ceci est une " + self.modele + " " + self.couleur + " avec " + self.mpg + " MPG."
    def conduire_voiture(self):
        self.condition = "usé"

Comme vous pouvez voir, il y'a "3" arguments qui sont transmis à la création de cette classe mais avec la classe fille VoitureElectrique il en faudrait un quatrième en plus qui serait "type_batterie".

Pourriez vous m'expliquer, s'il vous plaît, comment faire ça proprement ?

Merci d'avance :noel:

Azmurael
Azmurael
Niveau 10
15 juin 2017 à 22:24:41

Probablement un truc du genre :

class VoitureElectrique(Voiture): # On précise qu'on hérite de voiture
    def __init__(self, modele, couleur, mpg, type_batterie):
        # On utilise le constructeur de la classe mère
        Voiture.__init__(self, modele, couleur, mpg)
        # On ajoute note attribut
        self.type_batterie = type_batterie

Je pense qu'avec les commentaires, le code s'explique assez bien, si tu veux des précisions, n’hésite pas.

TreizeChats
TreizeChats
Niveau 4
15 juin 2017 à 22:25:44

Le 15 juin 2017 à 22:24:41 Azmurael a écrit :
Probablement un truc du genre :

class VoitureElectrique(Voiture): # On précise qu'on hérite de voiture
    def __init__(self, modele, couleur, mpg, type_batterie):
        # On utilise le constructeur de la classe mère
        Voiture.__init__(self, modele, couleur, mpg)
        # On ajoute note attribut
        self.type_batterie = type_batterie

Je pense qu'avec les commentaires, le code s'explique assez bien, si tu veux des précisions, n’hésite pas.

Non pas de souci c'est niquel merci, mais c'est juste que ca me paraissant bizarre comme ça :hap: Il existe pas plus propre ? :hap:

TreizeChats
TreizeChats
Niveau 4
15 juin 2017 à 22:32:47

Je veux dire par là que je pensais que lors de l'utilisation du __init__ dans la classe fille VoitureElectrique, je pensais que les arguments de la classe mère Voiture était automatiquement tranmis et qu'il n'y aurait besoin que de faire un __init__(self, type_batterie) qu'en gros les anciens arguments étaient déjà comptés :hap:

En tout cas merci de me répondre, c'est cool des réponses rapides et concises :noel:

Deadman93
Deadman93
Niveau 10
15 juin 2017 à 23:39:14

Ce n'est pas transmis directement au constructeur de la classe-mère, en effet.
Faut préciser quels arguments parmi ceux du constructeur de classe fille seront utilisés
par le constructeur de la classe mère.

Python ne se réfère pas à l'ordre des arguments dans le constructeur fille ni du nom d'une variable (tu peux trouver des justifications au niveau de la compilation et exécution :ok:) pour déterminer les arguments de la classe mère.

Le plus important est de filer les bons arguments au constructeur parent et dans l'ordre que tu as écrit pour cette méthode-ci dans la classe mère.

À ma connaissance, la plupart des langages utilisant l'orienté-objet te demandent d'appeler le constructeur de la classe mère d'abord quand tu construis une instance de la classe fille.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment