conditions à l'import [débutant] - Python - Programmation
MarshPosté 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 :
#module monParserPyEtJava :
#si le module est utilisé par mon appli java :
from javax.xml.parsers import DocumentBuilder, DocumentBuilderFactory
from org.w3c.dom import Node,Element,Attribute
factory=DocumentBuilderFactory.newInstance()
builder = factory.newDocumentBuilder()
parseString=self.builder.parse
#sinon:
from xml.dom import minidom,Node
parseString=minidom.parseString
class monParser:
def __init__(self):
#...
def parse(self,toParse):
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 ....
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:
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
d'avance merci !!!
vince