IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

__slots__, obsolète ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut __slots__, obsolète ?
    Salut tout le monde,

    Voilà, en parcourant les doc de python, je suis tombé sur __slots__, qui sois-disant économise la mémoire (ce que crois sur parole), mais il y est également dit que l'on ne peut plus par la suite rajouter et/ou modifer de variable d'instance (j'ai une idée quant à ce que ceci pourrait être, mais sans aucune certitude). Seulement voilà, voici ce j'ai tapé pour tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> class A:
     __slots__=('var1',)
     var1=5
     
    >>> A().var1=12
    >>> a=A()
    >>> a.var1
    5
    >>> a.var1=12
    >>> a.var1
    12
    >>> a.var2=50
    >>> a.var2
    50
    Or, je n'ai aucune erreur ... c'est normal ? (j'ai Python 2.5.2)

    Mes questions sont donc: quelle est l'utilité de __slots__ ? Quand et comment doit-on s'en servir ?

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Il ne faudrait pas définir avec le nouveau style de classe la classe a pour que cela marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> class a(object):
    	__slots__ = ("var1", )
    	var1 = 5
    >>> a().var1 = 12
     
    Traceback (most recent call last):
      File "<pyshell#27>", line 1, in <module>
        a().var1 = 12
    AttributeError: 'a' object attribute 'var1' is read-only
    >>>

  3. #3
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Ahhh.... je savais pas ce qu'était le nouveau style de classe... d'ailleurs, c'est quoi ? la classe doit automatiquement 'dérivée' de object ?

  4. #4
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Pour être du nouveau style, il suffit de dériver de quelquechose (donc par défaut de object) => http://docs.python.org/ref/node33.html

  5. #5
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Ok, merci , j'sens que j'vais avoir de quoi lire pour faire mal à la tête ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#][Langage]Comment déclarer un membre obsolète
    Par DonkeyMaster dans le forum C#
    Réponses: 4
    Dernier message: 23/01/2007, 17h59
  2. [C#] new hastable obsolète
    Par mobscene dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/12/2006, 16h06
  3. Migration MySql 4 - Php 5 : connaitre fonctions obsolètes
    Par chris-ren dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/02/2006, 11h48
  4. Réponses: 2
    Dernier message: 16/01/2006, 22h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo