Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de notation par point.

4 réponses
Avatar
Michel Claveau - MVP
Bonjour !

J'ai un problème pour appeler des fonctions système (COM)
qui comportent des points.

Exemple :
# la fonction de ServTest que l'on veut utiliser est nommée "gui.show()"
pf = win32com.client.Dispatch('ServTest')
print pf.gui.show()

Evidemment, Python passe seulement "gui" à pf au lieu de "gui.show".
Ce qui donne un Traceback ressemblant à :
File "XXX.py", line 14, in <module>
print pf.gui.show()
AttributeError: 'function' object has no attribute 'show'


Est-ce que vous auriez une idée, pour "grouper" "gui.show" ?


Merci d'avance.
--
Michel Claveau

4 réponses

Avatar
pdorange
Michel Claveau - MVP wrote:

Est-ce que vous auriez une idée, pour "grouper" "gui.show" ?



Je susi pas sur que python autorise vraiment de nommer une fonction avec
un "point" dans le nom...

<http://docs.python.org/reference/lexical_analysis.html#identifiers>

Dans la syntaxe python, "." est un délimiteurs...
<http://docs.python.org/reference/lexical_analysis.html#delimiters>

--
Pierre-Alain Dorange <http://microwar.sourceforge.net/>

Ce message est sous licence Creative Commons "by-nc-sa-2.0"
<http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>
Avatar
BertrandB
Michel Claveau - MVP a écrit :
Bonjour !

J'ai un problème pour appeler des fonctions système (COM)
qui comportent des points.

Exemple :
# la fonction de ServTest que l'on veut utiliser est nommée "gui.show()"
pf = win32com.client.Dispatch('ServTest')
print pf.gui.show()

Evidemment, Python passe seulement "gui" à pf au lieu de "gui.show".
Ce qui donne un Traceback ressemblant à :
File "XXX.py", line 14, in <module>
print pf.gui.show()
AttributeError: 'function' object has no attribute 'show'


Est-ce que vous auriez une idée, pour "grouper" "gui.show" ?


Merci d'avance.


Je sens que je vais dire une connerie ....
mai est-ce que
gui = win32com.client.Dispatch('ServTest.gui')
serait légal ? on appelle bien Word.Application
sinon ce ne peut pas être un problème de casse ? les exemples sur le net
semble ne pas poser de pb.
app = win32com.client.Dispatch("Word.Application")
doc_template = app.Documents.Open(doc_template_name)
Avatar
William Dode
On 24-12-2009, Michel Claveau - MVP wrote:
Bonjour !

J'ai un problème pour appeler des fonctions système (COM)
qui comportent des points.

Exemple :
# la fonction de ServTest que l'on veut utiliser est nommée "gui.show()"
pf = win32com.client.Dispatch('ServTest')
print pf.gui.show()

Evidemment, Python passe seulement "gui" à pf au lieu de "gui.show".
Ce qui donne un Traceback ressemblant à :
File "XXX.py", line 14, in <module>
print pf.gui.show()
AttributeError: 'function' object has no attribute 'show'


Est-ce que vous auriez une idée, pour "grouper" "gui.show" ?



Qu'est-ce que tu donnes getattr(pf,'gui.show') ?

a+

--
William Dodé - http://flibuste.net
Informaticien Indépendant
Avatar
rejoc
Le 24/12/2009 12:36, Michel Claveau - MVP a écrit :
Bonjour !

J'ai un problème pour appeler des fonctions système (COM)
qui comportent des points.

Exemple :
# la fonction de ServTest que l'on veut utiliser est nommée "gui.show()"
pf = win32com.client.Dispatch('ServTest')
print pf.gui.show()


Et un truc du genre :

pf_gui_show = getattr(pf, "gui.swho")
print pf_gui_show()

Ca m'a déjà aidé dans des cas où les attributs avaient des "-" alors,
pourquoi pas ...