3 votes

Importation d'un module, AttributeError

J'essaie d'importer un module pour utiliser quelques méthodes qu'il possède, et pour une raison quelconque, j'obtiens tout à coup l'erreur suivante :

AttributeError: 'module' object has no attribute 'getFoobar'

Bien sûr, j'ai une méthode getFoobar dans le module que j'importe. Je l'utilise dans d'autres fichiers sans problème. Cela ne s'est jamais produit auparavant.

J'ai déjà essayé d'effacer tous les fichiers .pyc, j'ai vérifié que j'avais bien un fichier .pyc. __init__.py dans le même dossier, et il n'y a pas d'importations mutuelles en cours.

J'ai cherché dans SO et Google et aucune solution n'a résolu le problème pour moi. Avez-vous des idées sur ce qui pourrait se passer ? Que puis-je essayer d'autre ?

Merci !

0voto

chameco Points 466

Essayez-vous d'accéder à une fonction libre de niveau module, ou à une méthode ? Cela fait une grande différence. Si vous avez quelque chose comme ça :

class foo:
    def bar1():
        pass
def bar2():
    pass

enregistrés dans un fichier "foo.py", alors vous devez faire différentes choses pour appeler chacun d'entre eux, comme ceci :

import foo
f = foo.foo()
f.bar1()
foo.bar2()

Comme vous pouvez le voir, vous pouvez accéder directement à bar2 depuis le module foo, puisqu'il est en dehors de la classe foo, mais vous devez déclarer une instance de la classe foo pour appeler bar1. Je suppose que vous avez simplement essayé d'appeler bar1 à partir du module foo, car c'est une erreur commune aux débutants, surtout si vous êtes passé de Java à Foo.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X