Au lancement de ce code j'ai un merveilleux "NameError: name 'fenetre' is not defined", le programme bloquant à la ligne "panelListe = wx.Panel(fenetre)" (fenetre étant le parent de panelListe), au tout début de la classe PanneauxBanques. Je ne vois vraiment pas le soucis, d'autant que l'instanciation de "fenetre" est faite à la fin.
C'est tout à fait normal, ta classe n'a aucune connaissance des variables qui lui sont extérieures à moins que tu ne les lui passes en arguments.
Le problème n'est pas là. Les scopes dynamiques de Python font qu'il est parfaitement possible de référencer une variable définie à l'extérieur.
Dans son cas, ce qui coince est que la ligne 15 est évaluée avant la 110, et donc que fenetre n'est pas définie. Une solution serait de créer une méthode __init__ dans la classe PanneauxBanques, et de ne l'appeler qu'une fois fenetre définie.
Mais tu pourrais aussi en profiter pour passer fenetre en paramètre lors de la construction de PanneauxBanques.
Au passage, pourquoi une méthode initialize ? __init__ est déjà là pour faire le boulot. En plus, ta méthode initialize` n'est jamais appelée (regarde bien la ligne 111).
Merci entwanne pour ta réponse. J'ai effectivement codé le constructeur de la classe PanneauxBanques et j'ai fait sauter la méthode initialize de la classe Fenetre (j'ai du vouloir la mettre pour l'utiliser après l'instanciation de "fenetre", mais bon c'est tordu - je suis pas encore parfaitement au point niveau compréhension des mécanismes). Au final tout est séparé et propre, donc je peux finalement créer une instance de la classe Fenetre pour ensuite en créer une de PanneauxBanques. Ça roule bien mieux, encore merci
- Edité par dephdre 13 février 2016 à 18:20:12
"NameError : name is not defined" alors que si
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique