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 :

appel de classe dans un répertoire différent


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut appel de classe dans un répertoire différent
    bonjour

    vous m'avez aidé pour les classes dans un même répertoire et ça fonctionne

    j'essaye un fichier de classe dans un sous répertoire rclass, en commençant par une classe qui ne fait qu'imprimer et qui fonctionne dans le même répertoire
    mais ne fonctionne plus dans une sous répertoire

    principal.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       import rclass.classe_test
       t1 = classe_test.test1(5)
       t1.fonction()

    rclass
    classe_test.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            class test1(): 
                 def __init__(self, data):
                      self.data = data
                      print("appel réussi")
     
                 def fonction(self):
                      print(self.dada)
    j'ai eu une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         t1 = class_test(5) 
         NameError : name 'classe_test' is not defined

    pourtant j’indique bien le chemin à partir du répertoire du programme principal

    au cas où j'ai changé le . par / puis \
    j'ai essayé avec / : rclass/class_test
    SyntaxError :invalid syntax sur /

    j'ai essayé \ : rclass\classe_test
    SyntaxError : enexpected character after line continuation character

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Par défaut re
    A tu regardé du coté d'un fichier __init__.py dans ton sous repertoire ?

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Si import rclass.classe_test fonctionne, l'accès à la classe se fait via rclass.classe_test.test1.
    Si vous voulez y accéder via test.test1, il faut créer l'alias avec import rclass.classe_test as test.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    wiztricks : j'ai juste la fonction _init__(self, data): dans la class test1() dans le fichier classe_test dans le sous répertoire rclass

    BamBi25 : j'ai modifié mon post , j'avais fait une faute de recopie, la fatigue de tourner en rond.
    l'appel se fait par import chemin.nom_fichier
    import rclass.classe_test

    le fichier classe_test.py est exactement celui que j'ai créé dans le répertoire de travail de principal.py et que j'ai transféré dans le sous-répertoire rclass
    ceci pour être sûr d'avoir éliminer toutes les autres errreur (frappe, indentation, etc)
    cela fonctionne dans le même répertoire

    donc travailler sur un répertoire enfant impose, je suppose, une définition de chemin qu'il doit manquer dans mon programme. mais en dehors du nom du sous-répertoire, je ne vois pas.


    j'ai un peu creusé la remarque de wiztricks, j'ai vu qu'effectivement il était conseillé de rajouté un fichier __init__.py (même vide) dans le sous-répertoire
    ce que j'ai fait et cela ne change rien

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    je reviens vers vous car je ne trouve pas de solution
    j'ai vu sur des tutos que certains faisaient l'appel en partant du répertoire courant
    import repertoire _courant.sous_repertoire.nom_fichier.py

    mais j'ai toujours la même erreur ma classe n'est pas défini alors que dans le même répertoire, ça fonctionne
    en mettant un __init__.py toujours la même erreur
    je sèche

    peut-être faut-il rajouter un chemin pour python ?

    je précise je ne travaille pas dans un répertoire python mais dans un repertoire perso, mais ça fonctionne correctement quand je lance un programme python
    enfin jusqu'à maintenant je l'ai toujours fait de l'éditeur.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par toppsir Voir le message
    je reviens vers vous car je ne trouve pas de solution
    Essayez de comprendre le problème en relisant attentivement ce que j'écrivais ici.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par toppsir Voir le message
    je reviens vers vous car je ne trouve pas de solution
    Citation Envoyé par toppsir Voir le message
    rclass
    classe_test.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            class test1(): 
                 def __init__(self, data):
                      self.data = data
                      print("appel réussi")
    
                 def fonction(self):
                      print(self.dada)
    j'ai eu une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         t1 = class_test(5) 
         NameError : name 'classe_test' is not defined
    "class_test" n'est pas une classe, c'est un nom de fichier. La classe se nomme "test1".

    Donc soit
    • import rclass.class_test; t1=rclass.class_test.test1(5)
    • from rclass import class_test1; t1=class_test.test1(5)
    • from rclass.class_test import test1; t1=test1(5)

    Tout ça sous couvert d'avoir aussi un fichier "__init__.py" présent dans le dossier "rclass". Et corrige ta méthode "fonction" ("data" et non "dada").
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    j'ai mis un peu de temps pour vous répondre

    j'ai essayé les 3 solutions, ça fonctionne
    je vous remercie, je n'avais pas compris qu'il fallait répéter le chemin.

    python ce n'est pas si compliqué, mais il y a plein de petits détails à prendre en compte

    merci beaucoup

    résolu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2007, 11h50
  2. Utilisation de forms et classes dans autre répertoire
    Par xfr3dx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/03/2007, 12h22
  3. Appeler une classe dans un autre package
    Par Nasky dans le forum Langage
    Réponses: 6
    Dernier message: 21/02/2007, 16h06
  4. Réponses: 1
    Dernier message: 01/11/2006, 15h57
  5. [VBA] Excel- Save un document dans 2 répertoires différents
    Par altarez dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/01/2006, 22h32

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