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 :

approche objet en python...associer des classes.


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Points : 10
    Points
    10
    Par défaut approche objet en python...associer des classes.
    Salut,

    Je débute l'objet ; je sais créer une classe en python (dans les grandes lignes) et lui attribuer des méthodes, l'instancier.
    Mon problème réside dans la communication entre les classes.

    Je n'ai pas saisi comment associer 2 classes en python ; ce que je cherche n'est pas une solution toute faite, le reco-pillage est à mon sens tout sauf formateur, mais une approche (illustrée par un code commenté) me permettant par la suite d'attaquer des modèles un peu plus complexes.

    Si, déjà, j'arrivais à matérialiser une association 1,1, ce serait en grand pas en avant.

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    class math:
        "pour caculer le perimetre et la surface d'un rectangle"
        "perimetre = 2*longuer +2*hauteur   self.p  =2*self.l+self.h"
        "surface=longuer*hauteur            self.f  =self.l*self.h"
        def __init__(self,l=10,h=20):
            self.l   =l              #longuer
            self.h   =h              #hauteur
     
        def peri(self):
            self.p  =2*self.l   +2*self.h
            return self.p
     
        def surface(self):
            self.s  =self.l*self.h
            return self.s
     
     
    if __name__=="__main__":
        "pour l=50, h=15"
        app =math(50,15)    #ou app =math(l=50,h=15)  ou app =math (h=15,l=50)
        print app.peri()
        print app.surface()
    sauvegade en a.py tu peut mme le lancer a.py

    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
    17
    18
    19
     
    import a   #<== importer la classe
    class valeur:
        def __init__(self,l=0,h=0):
            self.l  =l
            self.h  =h
            self.az  =a.math(self.l,self.h)   #affecter a la valeur de self.az
     
        def pe(self):
            return self.az.peri()   #appelle le perimetres de la classe a
     
        def su(self):
            return self.az.surface()   #idem
     
     
    if __name__=="__main__":
        app =valeur(15,58)    #modifier le svaleur 
        print app.pe()
        print app.su()
    save et lance,
    le 2emme e uen classe qui faits appelle a la 1er classe a

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    merci pour ton exemple très clair qui me donne une perspective à laquelle je n'avais pas pensé... Je commence à saisir les avantages de l'objet.

    Ce n'est cependant pas exactement ce que j'attendais (je suis pas en train de cracher dans la soupe, ton exemple me sera utile !!!).

    Un exemple classique : le mariage.
    j'ai une classe personne dont héritent les classes homme et femme.
    comment matérialiser le mariage entre un homme et une femme suivant le postulat occidental classique selon lequel un homme ne peut etre marié qu'à une seule femme et vice versa ?
    Et comment matérialiser ensuite une version illustrant une situation polygame ?


    Vos réponses sont toujours les bienvenues.
    Un grand merci déjà pour ces éléments de réponse.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    desoler, je ne travailel pas dans une agents de rencontres

    polygame c'est qoui ça?
    si no tu peut plus nous detaile

  5. #5
    Membre habitué
    Avatar de Olivier_
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 111
    Points : 127
    Points
    127
    Par défaut
    Salut,

    polygame : "marié" avec plusieurs femme (ou homme, mais c'est généralement le contraire)

    Nous vivons dans une société monogame donc un seul mari ou une seule femme.

    Pour revenir au problème qui nous interesse.
    Pour gérer le truc, tu fais 1 instance de la classe homme et 1 de la classe femme toutes 2 heritées de la classe personne avec toutes les méthodes en communs.

    Tu fais une classe mariage qui permet la polygamie, et tu fais une classe heritée qui fait le mariage à l'occidental.
    La classe polygamie prendra en paramètre une instance de classe homme ou femme et une liste d'instance de classe homme ou femme (pour qu'un homme soit avec plusieurs femme ou une femme avec plusieurs hommes, enfin tu vois le trucs quoi !!)

    Ensuite pour la classe heritée qui n'accepte pas la polygamie, les paramètre seront une instance de classe homme et une instance de classe femme.

    Voilà en gros. De cette façon, tu accèderas aux propriétés de personne(), de homme() et de femme() dans ta classe mariageOccidental()

    (p.s. une instance de classe = un objet)
    (p.s.2 je ne suis pas expert, je ne garanti pas l'l'idéalité de la solution !)

    <edit mod="blagounette">Manquera plus que les classes maitresse() et amant() toutes deux héritées de la classe mariage() (polygame) </edit>

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    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
    17
    18
    19
    20
    21
    class marie:
        #def __init__(self,):
     
     
        def homme(self):
            self.a  =10
            print self.a
     
     
        def femme(self):
            self.b  =25
            print self.a
            print self.b
     
     
     
     
    if __name__=="__main__":
        app =marie()
        app.homme()
        app.femme()

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Salut et merci à vous...

    Vous comprendrez bien que mon exemple sert juste à illustrer 2 types d'association applicables à un même système.

    Pour ce qui est des classes maitresses et amant... c'est une idée. Alors attends... un homme peut avoir plusieurs maitresses, mais aussi plusieurs amants, pareil pour la femme... Ca commence à devenir tordu !!!

    plus sérieusement, je vous remercie ; en plus des infos que j'ai collecté de mon côté, je devrais avoir de quoi travailler.

    Cela dit, je ne marque pas le sujet 'résolu' afin de pouvoir demander de l'aide quand j'en aurai besoin.

  8. #8
    Membre habitué
    Avatar de Olivier_
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 111
    Points : 127
    Points
    127
    Par défaut
    Pour continuer la p'tite masturbation de neurones au niveau des amants, non ça ne complique pas tant que ça le problème, vu que la relation est héritée du concubinage
    Tu peux avoir plusieurs amants/maitresses

    Après, il faut juste gérer la femme ou le mari

    Après, faudra faire la classe de gestion des p'tits copains du collège et de la primaire !!

    Okay je sors !!

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 18
    Points : 10
    Points
    10
    Par défaut


    Sors pas g trouvé ca drôle !!!
    (plus C nul et plus je me marre)

    PS - Je trouvais ca tordu au niveau de la situation du couple...

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Preacher man, cette association de mariage m'a permi de comprendre beaucoup mieux l'objet, c'est pas trop tôt

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/09/2013, 12h29
  2. Réponses: 15
    Dernier message: 01/04/2011, 20h58
  3. Réponses: 4
    Dernier message: 16/08/2006, 09h19

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