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 :
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)
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.
J'ai trouvé un tour de passe-passe qui 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)
Comme ma classe Canvas "personnelle" hérite de la classe object, mon appel à super fonctionne.

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.