Bonjour à tous,
J'écris un programme de simulation d'une population d'organismes (très basique). Un organisme évolue dans une zone (hauteur et largeur définies) qui restreint ses déplacements. J'ai l'intention de faire une classe Zone dérivée de Tkinter.Canvas. Voici mon code :
L'appel de super ne fonctionne pas : tel que je l'ai écrit, la classe mère devrait hériter de la classe object, ce qui ne semble pas être le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 1.import Tkinter as tk 2.class Zone(tk.Canvas): 3. def __init__(self, master, hauteur, largeur, couleur): 4. self.master = master #fenêtre maîtresse 5. self.largeur, self.hauteur = largeur, hauteur 6. self.organismes = [] #collection d'organismes évoluant dans la zone 7. #appel du constructeur de la classe mère 8. super(Zone, self).__init__(self.master, width=largeur, height=hauteur, bg=couleur)
J'ai trouvé un tour de passe-passe qui fonctionne :
Comme ma classe Canvas "personnelle" hérite de la classe object, mon appel à super fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 1.import Tkinter as tk 1.class Canvas(tk.Canvas, object) 2. pass 3. 4.class Zone(Canvas): 5. def __init__(self, master, hauteur, largeur, couleur): 6. self.master = master #fenêtre maîtresse 7. self.largeur, self.hauteur = largeur, hauteur 8. self.organismes = [] #collection d'organismes évoluant dans la zone 9. #appel du constructeur de la classe mère 10. super(Zone, self).__init__(self.master, width=largeur, height=hauteur, bg=couleur)
Je vous embête juste pour savoir s'il existe une manière d'appeler la classe mère sans qu'elle n'hérite d'object, et sans faire ma petite bidouille.
Partager