Bonjour,
Je souhaiterais modifier le comportement d'un module A en utilisant à la place un module B afin que:
- Quelques objets de A soient décorés (en l'occurence décorer quelques widgets de Tkinter). Disons que je connais une liste des noms des objets que je souhaite décorer.
- B soit par ailleurs entièrement similaire à A.
- Pouvoir faire [from B import*]. Dans ce cas, je voudrais que soient importées les objets décorés, et tous les autres objets inaltérés de A.
J'ai esayé un module B du genre (ici j'essaye juste de décorer la classe Entry)
Mais des que je fais [from B import *], j'ai une erreur (dictionary changed size during iteration). Cette erreur est levée en laissant juste la ligne [from Tkinter import *]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def gridder(cls): return cls # un decorateur import Tkinter from Tkinter import * Entry= gridder(Entry)
- Est-il possible de import* un module contenant un import*
- Devrais-je plutot décorer le module [import A puis A= apply(A,dec)], utiliser inspect, ou quelque chose du genre
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 module = sys.modules[__name__] for func in ('Entry', 'Listbox', 'Button'): setattr(_module, func, gridder(getattr(Tkinter, func)))
Partager