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 :

problème (certainement) d'import


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut problème (certainement) d'import
    Bonjour !

    J'ai un problème avec mon code. Je me casse la tête dessus depuis plus 1h30



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class FbInOutput:
        def __init__(self, name):
            self.name = name
            self.value = False
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    from FB.FbInOutput import FbInOutput
     
    class FbInput(FbInOutput):
        def __init__(self, name):
            self.name = name
            self.value = False
    A l'exécution de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import FB.FbInOutput, FB.FbInput
    a = FbInput('a')
    je reçois l'erreur :
    a = FB.FbInput('a')
    TypeError: 'module' object is not callable
    Il est bien écrit dans la documentation python que quand un classe enfant appelle est appelée, son __init__ doit comprendre explicitement un appel vers le __init__ de la classe parent.

    Pour simplifier, je l'ai re-écrit entièremet, on verra quand ça ça marchera déjà

    Je peux aussi je pense enlever de l'import le FB.FbInOutput qui joue ici le rôle d'une classe abstraite, mais j'ai aussi préféré le laisser pour ne pas cumuler ...

    L'arborescence de mes fichiers est :

    __ code_executé.py
    __ FB
    |__ __init__.py
    |__ FbInOutput.py
    |__ FbInput.py

    Merci par avance pour votre aide

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce que tu cherches à faire, c'est de l'importation de packages qui dispose de règles particulières.

    Reprenons tes éléments:

    un fichier test.py qui contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from FB.FbInput import FbInput
    a = FbInput('a')
    (et tu avais importé le mauvais module)

    Dans le même répertoire, il y a un sous-répertoire appelé FB et contenant les 3 fichiers suivants:

    1- __init__.py ne contenant rien

    2- FbInOutput.py contenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class FbInOutput(object):
        def __init__(self, name):
            self.name = name
            self.value = False
    (prend l'habitude de créer des classes "nouveau modèle" héritant de "object")

    3- et enfin FbInput.py contenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    from .FbInOutput import FbInOutput
     
    class FbInput(FbInOutput):
        def __init__(self, name):
            self.name = name
            self.value = False
            print "ok!"
    Tu notes que à l'intérieur du package, les importations se font par adressage relatif: un '.' pour un module du même répertoire.

    Avec ça, ça marche.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    En effet, j'ai suivi tes conseils et cela marche Merci !

    J'ai une autre question : si je souhaitais appeler
    car il pourrait y avoir par exemple d'autres FbInput que ceux appartenant à FB, quelle doit être l'import à utiliser ?
    En effet, visiblement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import FB.FbInOutput, FB.FbInput
    ne marche pas ... Ils désignent pourtant bien les bons modules non ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Je viens de trouver : il faut appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FB.FbInput.FbInput('a')
    Logique, puisque j'appelle une création de classe contenue dans le module FbInput situé dans FB

    Merci encore

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

Discussions similaires

  1. Problème de Package Import
    Par Identifiant dans le forum Multimédia
    Réponses: 1
    Dernier message: 20/02/2007, 17h32
  2. Problème de syntaxe importation Excel
    Par evans dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/04/2006, 18h02
  3. Problème avec l'import DTS SQL Serveur 2005
    Par dlan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/03/2006, 11h47
  4. Problème sur export import fromuser touser
    Par tomsawyer dans le forum Oracle
    Réponses: 3
    Dernier message: 19/12/2005, 11h15
  5. Problème champ après import d'excel vers access
    Par David M dans le forum Access
    Réponses: 6
    Dernier message: 16/10/2005, 11h53

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