2009-02-27 9 views
9

Est-il possible en python de créer une propriété avec le même nom que le nom de la variable membre de la classe. par exemple.Créer une propriété python avec le même nom que le nom du membre de la classe

Class X: 
    ... 
    self.i = 10 # marker 
    ... 
    property(fget = get_i, fset = set_i) 

S'il vous plaît dites-moi comment je peux le faire. Parce que si je le fais, pour l'instruction au marqueur je reçois un dépassement de pile pour la assingm

Répondre

21

Est-il possible en python pour créer une propriété avec le même nom que le nom de la variable membre

No. les propriétés, les membres et les méthodes partagent tous le même espace de noms.

la déclaration au marqueur I get débordement de la pile

De toute évidence. Vous essayez de définir i, qui appelle le setter pour la propriété i, qui essaie de définir i, qui appelle le setter pour la propriété i ... ad stackoverflowum.

Le schéma habituel est de rendre le membre de la valeur de back-end non-publique classique, en préfixant avec « _ »:

class X(object): 
    def get_i(self): 
     return self._i 
    def set_i(self, value): 
     self._i= value 
    i= property(get_i, set_i) 

Notez que vous devez utiliser des objets nouveau style (de l'objet 'sous-classe) pour' propriété »pour fonctionner correctement.

+0

+1, Battez-moi :) :) – Kiv

+1

-1: oubliez de citer la documentation: http://docs.python.org/library/functions.html#property –

+2

+1 pour "ad stackoverflowum" :) –

Questions connexes