[débutant] conditions à l'import

conditions à l'import [débutant] - Python - Programmation

Marsh Posté le 27-05-2004 à 12:37:15    

bjour,
 
explication du pb :
 
- j'ai codé un parser en python qui utilise minidom
- j'ai codé un parser en jython qui utilise les classes dom de java (minidom ne passe pas dans jython  :( )
 
-> maintenant, je voudrais regrouper le code de ces 2 modules au maximum, pour n'en avoir qu'un au final si possible ...
Pour arriver à cela je pense utiliser des alias : en effet le contenu des 2 modules est à peu près identiques, seuls les noms des méthodes changent ...
 
Bon, l'idée est la suivante:
 

Code :
  1. #module monParserPyEtJava :
  2. #si le module est utilisé par mon appli java :
  3. from javax.xml.parsers import DocumentBuilder, DocumentBuilderFactory
  4. from org.w3c.dom import Node,Element,Attribute
  5. factory=DocumentBuilderFactory.newInstance()
  6. builder = factory.newDocumentBuilder()
  7. parseString=self.builder.parse
  8. #sinon:
  9. from xml.dom import minidom,Node
  10. parseString=minidom.parseString
  11. class monParser:
  12.    def __init__(self):
  13.       #...
  14.    def parse(self,toParse):
  15.       return parseString(toParse)


 
en gros, voilà le principe.
Maintenant, à l'instanciation de ma classe, je ne sais pas comment faire pour savoir quels imports je dois faire, etc ..  J'ai essayé en mettant les imports dans le __init__ (et en lui passant un booleen) mais ensuite je n'ai pas accès à mes alias ...
 
Bon elle est pourri mon idée ? vous feriez comment vous ?
 
D'autre part, concernant les alias, peut on faire un alias sur un attribut ?
En java, pour un Node, j'ai la méthode monNoeud.getParentNode(), par ex
En python, il s'agit d'un attribut, ex: monNoeud.parentNode
 
Comment faire pour créer un alias dans ce cas ?
A moins que je fasse les alias dans l'autre sens, genre :
#si utilisé par java  
# imports ...
parentNode=Node.getParentNode
 
mais dans ce cas, j'utiliserai une syntaxe du style : monNoeud.parentNode() .... et ça marchera plus avec les imports  python ....
 
Aaaargghh  :pt1cable:  
 
d'avance merci !!!
vince
 

Reply

Marsh Posté le 27-05-2004 à 12:37:15   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed