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 :

Acrobaties de variables


Sujet :

Python

  1. #1
    Membre tr�s actif
    Inscrit en
    Mai 2010
    Messages
    177
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par d�faut Acrobaties de variables
    Bonjour � tous,

    Depuis tout � l'heure j'ai r�ussi � faire la translation de programmes d'autres langages vers python.

    Parfait. J'ai progress�.
    Maintenant, savoir faire d'une mani�re c'est bien, mais j'aime la voltige.

    Ma question, qui semblera s�rement idiote, est de la masturbation intellectuelle.

    Soit fichier1 et fichier2, tel que :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #! /usr/bin/python
    #coding:utf-8
     
    #FICHIER1
    import fichier2
     
    class maClasse1 :
        def __init__(self):
            '''mes définitions'''
        def roulebille():
            '''ici l'objet de la question'''
    Et fichier2, fille
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #! /usr/bin/python
    #coding:utf-8
     
    #FICHIER2
     
    class maClass2(fichier1.maClasse1) :
     
      def __init__(self):
        fichier1.maClasse1.__init__(self)
     
      def cherche(self):
        '''ici pleins de variables locales'''
    La question c'est de savoir si je peux r�utiliser des variables locales d�finies dans cherche(), du fichier2, dans une nouvelle fonction du fichier1.
    global ne m'a pas aid�.

    Actuellement, je r�gle le probl�me en passant par des variables "self" du constructeur que je r�cup�re.

    Votre avis ?

    Merci � vous,

    A bient�t,

    LeHibou

  2. #2
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    Salut,

    Tu l'a test� ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    #! /usr/bin/python
    #coding:utf-8
     
    #FICHIER2
     
    class maClass2(fichier1.maClasse1) :
    sans importer fichier1 ce sera difficile, et si tu importes fichier1 qui lui-m�me importe fichier2 tu cr�es une boucle d'import que Python rejetera imm�diatement.

    Et puis pourquoi veux-tu faire cet h�ritage, est-il justifi� ?

    Pour r�pondre � ta question:
    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
     
    #! /usr/bin/python
    #coding:utf-8
     
    #FICHIER1
    from fichier2 import maClass2
     
    class maClasse1(object):
        def __init__(self):
            '''mes définitions'''
     
        def roulebille(self):
            self.mc2 = maClass2()
     
            # Maintenant tu peux
            self.mc2.attribut_machin = 'foo'
            self.bar = self.mc2.attribut_chose
            # etc
    Tu remarqueras quelques corrections.

    Citation Envoy� par LeHibou2 Voir le message
    Actuellement, je r�gle le probl�me en passant par des variables "self" du constructeur que je r�cup�re.
    Quoique la terminologie soit incorrecte, je crois comprendre ce que tu veux dire, c'est effectivement ainsi que l'on fait (donc comme dans mon exemple) et il est inutile de chercher une autre fa�on de faire.

  3. #3
    Membre tr�s actif
    Inscrit en
    Mai 2010
    Messages
    177
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par d�faut
    Merci VinsS,

    Je dois avouer qu'hier je n'avais plus les yeux en face des trous.
    J'ai simplifi� b�tement mon exemple et j'ai coup� des choses importantes.

    Je ne m'en rendais m�me plus compte.

    En tout cas, merci � toi,

    A bient�t,

    LeHibou

  4. #4
    Membre tr�s actif
    Inscrit en
    Mai 2010
    Messages
    177
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par d�faut
    Le plus simple �tant -�videmment- de faire un return de la valeur de la fonction, voire un tuple, et de le r�utiliser dans une variable temporaire...

  5. #5
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par d�faut
    Si maClass2 h�rite de maClass1 alors tous les attributs sont accessibles suivant "self":

    Exemple:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A:
        def foo(self):
             print (self.a)
     
    class B(A):
        def __init__(self, a):
           self.a = a
     
    b = B(3)
    b.foo()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre tr�s actif
    Inscrit en
    Mai 2010
    Messages
    177
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par d�faut
    Oui, tu as raison, et je ne me permettrais pas de discuter cet �tat de fait.

    Mais j'ai chang� d'avis quant � la n�cessit� de faire un h�ritage en vue de d�bugger plus simplement.

    Parce que le programme est devenu trop complexe avec des appels de partout et surveiller les variables ainsi que leur valeur d'appel devenait probl�matique.

    R�sultat : mise � jour du design -> pas d'h�ritage mais du transfert de valeur � la voltige avec contr�le des it�rations.

    Et l�, l'air est revenu.

    Bonne soir�e et bonnes f�tes � vous

    A bient�t,

    LeHibou

  7. #7
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    L'h�ritage te permet de faire ceci:
    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
    23
    24
     
    # -*- coding: utf-8 -*-
     
    class A(object):
        def __init__(self):
            pass
     
        def abrege(self, chain):
            return chain[:5] + '...'
     
    class B(A):
        def __init__(self):
            super(B, self).__init__()
     
        def format(self, st):
            if len(st) > 8:
                st = self.abrege(st)
     
            return st
     
    a = A()
    b = B()
     
    print b.format('Supercalifragilistisexpidilicious')
    o� tu peux constater que B a h�rit� de la m�thode abrege() de A.

  8. #8
    Membre tr�s actif
    Inscrit en
    Mai 2010
    Messages
    177
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par d�faut
    C'est tr�s vrai VinsS,


    Tu as instanci� "a" pour une raison particuli�re ?

  9. #9
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    Citation Envoy� par LeHibou2 Voir le message
    Tu as instanci� "a" pour une raison particuli�re ?

    Non, l'habitude.

  10. #10
    Membre tr�s actif
    Inscrit en
    Mai 2010
    Messages
    177
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par d�faut
    Merci beaucoup de tes lumi�res,

    Elles me seront utiles dans un cas que je pr�vois.

    A bient�t,

    LeHibou

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    R�ponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Proc�dure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    R�ponses: 15
    Dernier message: 21/06/2002, 11h08
  4. R�ponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    R�ponses: 8
    Dernier message: 27/04/2002, 08h34

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