IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python et heritage


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut Python et heritage
    Bonjour,
    j'ai un petit probleme de comprehension en python, j'essai de faire heriter une classe et de construire la classe qui herite en passant un objet de la classe mere en parametre, avec un exemple ce sera plus clair:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class class1(object):
        def __init__(self, id):
            self.id = id
        def getID(self):
            return self.id
     
    class class2(class1):
        def __init__(self, ref):
            class1.__init__(self, "trtr")
            self.value = "dd"
     
    if __name__ == '__main__':
        obj1 = class1("llllllll")
        obj2 = class2("sdsd")
        print obj2.getID()
    et cela marche, c exactement ce que je veux ... cependant j'y suis arrive en faisant des essai ... parce que ca ne me parait pas du tout logique !!!
    Tout se passe au niveau de la fonction __init__ de ma class2. Je ne comprend pas a quel moment mon 2eme parametre (que j'ai ajoute par hazard car le compilo criait de ne pas en avoir) est pris en compte ??

    si quelqu'un pouvait m'aider a comprendre,
    merci

  2. #2
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Citation Envoyé par suckthewindow Voir le message
    Bonjour,
    j'ai un petit probleme de comprehension en python, j'essai de faire heriter une classe et de construire la classe qui herite en passant un objet de la classe mere en parametre, avec un exemple ce sera plus clair:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class class1(object):
        def __init__(self, id):
            self.id = id
        def getID(self):
            return self.id
     
    class class2(class1):
        def __init__(self, ref):
            class1.__init__(self, "trtr")
            self.value = "dd"
     
    if __name__ == '__main__':
        obj1 = class1("llllllll")
        obj2 = class2("sdsd")
        print obj2.getID()
    et cela marche, c exactement ce que je veux ... cependant j'y suis arrive en faisant des essai ... parce que ca ne me parait pas du tout logique !!!
    Tout se passe au niveau de la fonction __init__ de ma class2. Je ne comprend pas a quel moment mon 2eme parametre (que j'ai ajoute par hazard car le compilo criait de ne pas en avoir) est pris en compte ??

    si quelqu'un pouvait m'aider a comprendre,
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class class1(object):
        def __init__(self, id):
            self.id = id
     
        def get_id(self):
            return self.id
     
    class class2(class1):
        pass
     
    c1 = class1('class1')
    c2 = class2('class2')
     
    print c1.get_id()
    print c2.get_id()
    T'as pas besoin de définir de méthode __init__() pour class2, il va utiliser celle de la classe parente.

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    En fait ca marche pas tant que ca !!!
    parce que l'attribut id est pas recopier :'(

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    Et oui mais j'aimerai bien initialiser une variable dans ma class2, du coup comment faire ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Si tu veux que self.id="trtr" dans class2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class class1(object):
      def __init__(self, id):
        self.id = id
      def getID(self):
        return self.id
     
    class class2(class1):
      def __init__(self):
        self.id = "trtr"
        self.value = "dd"
     
    if __name__ == '__main__':
      obj1 = class1("llllllll")
      obj2 = class2()
      print obj2.getID()

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    ok merci en fait il faut que je fasse un constructeur par recopie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  2. [Kylix] heritage multiple et interfaces :(
    Par le_barbu dans le forum EDI
    Réponses: 4
    Dernier message: 26/01/2004, 19h30
  3. [Postgres] Pb d'heritage...
    Par anonia dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2003, 22h34
  4. [HERITAGE] Redondance ou pas redondance ???
    Par cyrillus76 dans le forum Schéma
    Réponses: 1
    Dernier message: 11/06/2003, 09h46
  5. [PostgreSQL] Question vis a vis de l'heritage...
    Par Gandalf dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/05/2003, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo