Un module et un script principal
Le
Xavier Maillard
Bonsoir,
j'ai fait mes grans débuts en python il y a peu et je coince sur
certains points.
Le cas du jour, je vous le présente brièvement.
J'ai écrit un module (w9n.py) qui définit plusieurs classes et
notamment des classes d'exception.
Le script principal charge le module par la directive suivante:
import w9n
Plus loin, dans le __main__ de mon script principal, j'essaie bêtement
d'utiliser certaines classes et j'obtiens toujours la même erreur:
Traceback (most recent call last):
File "./DBA_mys.py", line 85, in <module>
tool = W9NTool()
NameError: name 'W9NTool' is not defined
Je crois comprendre qu'il faut que je "préfixe" par le nom du fichier
soit w9n.W9NTool() mais j'ai bien peur qu'à la longue cela devienne
vite fastidieux et notamment pour la partie gestion des exceptions.
Comment faire pour ne pas avoir à "préfixer" mes appels de
fonctions/méthodes/classes depuis mon script principal ?
Merci
Xavier
P.S: connaissez-vous un (excellent) tutoriel présentant concrètement
et très simplement la mise en place de TDD (Test Driven Development)
en python ? Je cherche à faire quelque chose de propre (merci python)
et à donner un maximum de garanties quant à la qualité du code (encore
une fois merci python). Mon soucis étant que je ne suis pas très au
fait sur ce genre de pratique et surtout j'ai peur de ne pas faire les
tests adéquats.
j'ai fait mes grans débuts en python il y a peu et je coince sur
certains points.
Le cas du jour, je vous le présente brièvement.
J'ai écrit un module (w9n.py) qui définit plusieurs classes et
notamment des classes d'exception.
Le script principal charge le module par la directive suivante:
import w9n
Plus loin, dans le __main__ de mon script principal, j'essaie bêtement
d'utiliser certaines classes et j'obtiens toujours la même erreur:
Traceback (most recent call last):
File "./DBA_mys.py", line 85, in <module>
tool = W9NTool()
NameError: name 'W9NTool' is not defined
Je crois comprendre qu'il faut que je "préfixe" par le nom du fichier
soit w9n.W9NTool() mais j'ai bien peur qu'à la longue cela devienne
vite fastidieux et notamment pour la partie gestion des exceptions.
Comment faire pour ne pas avoir à "préfixer" mes appels de
fonctions/méthodes/classes depuis mon script principal ?
Merci
Xavier
P.S: connaissez-vous un (excellent) tutoriel présentant concrètement
et très simplement la mise en place de TDD (Test Driven Development)
en python ? Je cherche à faire quelque chose de propre (merci python)
et à donner un maximum de garanties quant à la qualité du code (encore
une fois merci python). Mon soucis étant que je ne suis pas très au
fait sur ce genre de pratique et surtout j'ai peur de ne pas faire les
tests adéquats.

Poser une question


Bonjour,
Si tu veux importer un nom depuis un module :
from w9n import W9NTool
Pour importer tous les noms d'un mdule :
from w9n import *
- Pierre
Attention toutefois, cette méthode a deux inconvénients:
1/ par défaut, tous les noms existant dans l'espace de nommage de w9n
seront importés (à l'exception de ceux débutant par un '_'). Donc si w9n
importe lui-même les noms 'foo' et 'bar', l'instruction ci-dessus
importera également 'foo' et 'bar' (nb: ça peut être réglé en
définissant la variable __all__ dans w9n, se référer à la doc).
2/ ça ne permet pas de savoir clairement ce qui est importé et d'où
c'est importé.
Donc préférer autant que possible des imports explicites:
from w9n import Name1, Name2 (,... NameN)
Dive into python m'a beaucoup aidé :
http://www.diveintopython.org/
et plus particulierement, ence qui te concerne :
http://diveintopython.org/unit_testing/index.html
--
Jérémie
jeremie fouche wrote:
Merci pour ces références.
Xavier
Pierre Quentel wrote:
Quelle est la différence avec un simple:
import w9n
?
Xavier