Bonjour,

J'ai un problème avec l'utilisation, il y a quelque chose qui m'échappe.

J'ai testé un exemple trouvé sur un livre (Python en concentré, Alex Martelli, édition O'Reilly 2004 p84-85):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Rectangle(object):
    def __init__(self,largeur,hauteur):
        self.largeur = largeur
        self.hauteur = hauteur
    def get_surface(self):
        return self.largeur * self.hauteur
 
class RectangleOptimise(Rectangle):
    __slots__ = "largeur","hauteur"
 
r = Rectangle(2.,3.)
r.surface = r.get_surface()
print r.surface
 
r = RectangleOptimise(2.,3.)
r.surface = r.get_surface()
print r.surface
aucune exception n'est levée par le second r.surface = r.get_surface().
comme si le __slots__ n'avait pas été pris en compte.

J'ai testé sur 2 versions de l'interpréteur python (2.4.2 et 2.5.4) sur deux machines différentes.

J'ai remarqué qu'en ajoutant un __slots__ identique à la première classe cela fonctionne comme prévu.

Vous avez remarqué quelque chose de similaire ?

Merci d'avance pour votre aide.