Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1651 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Problème sur les propriétés

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème sur les propriétés

n°1274757
multani
Dépressionnisé
Posté le 30-12-2005 à 00:48:44  profilanswer
 

Salut,
 
j'ai récemment découvert les propriétés (property) dans Python, mais je trouve le comportement un peu étonnant :

Code :
  1. class C:
  2.     def __init__ (self):
  3.         self._id = None
  4.     
  5.     def get_id(self):
  6.         return self._id
  7.     
  8.     def getter_id(self):
  9.         return self._id
  10.     
  11.     def setter_id(self, value):
  12.         self._id = value
  13.     
  14.     id = property(getter_id, setter_id)
  15.     
  16. c = C()
  17. print c.id, c.get_id()
  18. c.id = 2
  19. print c.id, c.get_id()


qui retourne :


jon@deb64:~$ python test.py
None None
2 None
jon@deb64:~$


 ... alors que je m'attendais à "2 2" pour la deuxième ligne ...
 
D'après http://www.python.org/2.2/descrintro.html#property , les "méthodes" setter_id et getter_id ne sont pas vraiment des méthodes (même si on peut les considérer comme telles), mais les infos qu'ils donnent n'ont pas l'air de correspondre à mon cas ci-dessus [:petrus dei]
 
Est-ce que je loupe quelque chose ?

mood
Publicité
Posté le 30-12-2005 à 00:48:44  profilanswer
 

n°1274783
tomazi
Posté le 30-12-2005 à 02:44:35  profilanswer
 

C'est comme si tu faisais :

Code :
  1. print c.id, c._id


Donc normal que ça donne "2 None" non ?

n°1274788
0x90
Posté le 30-12-2005 à 02:58:17  profilanswer
 

ta classe n'est pas une new style class donc les property n'y marchent pas, tu dois hériter de object.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1274866
multani
Dépressionnisé
Posté le 30-12-2005 à 11:33:23  profilanswer
 

tomazi a écrit :

C'est comme si tu faisais :

Code :
  1. print c.id, c._id


Donc normal que ça donne "2 None" non ?


Ben justement non, vu que c'est censé représenter la même valeur de l'attribut ...

0x90 a écrit :

ta classe n'est pas une new style class donc les property n'y marchent pas, tu dois hériter de object.


Effectivement, en remplacant par "class C(object):", ça marche mieux. :jap:

n°1274894
masklinn
í dag viðrar vel til loftárása
Posté le 30-12-2005 à 11:48:32  profilanswer
 

tomazi a écrit :

C'est comme si tu faisais :

Code :
  1. print c.id, c._id


Donc normal que ça donne "2 None" non ?


No, les deux sont équivalents

0x90 a écrit :

ta classe n'est pas une new style class donc les property n'y marchent pas, tu dois hériter de object.


Burnaid [:sisicaivrai]
 
À noter que les "classic classes" devraient disparaître de Python 3000, tout objet héritant par défaut d'object
 
Jusque là, bien penser à faire hériter toutes les classes d'object (ou une autre classe héritant déjà d'object, int, long, list, tuple, dict, set, ...).
 
Je pense que PyLint ou PyChecker sont capables de vérifier qu'on ne l'a pas oublié, aller voir de ce côté là.

n°1274944
multani
Dépressionnisé
Posté le 30-12-2005 à 13:23:30  profilanswer
 

masklinn a écrit :

Je pense que PyLint ou PyChecker sont capables de vérifier qu'on ne l'a pas oublié, aller voir de ce côté là.


PyLint ne bronche pas, par contre PyChecker si :jap:

n°1275149
masklinn
í dag viðrar vel til loftárása
Posté le 30-12-2005 à 21:25:59  profilanswer
 

Perso j'utilise les deux en général (PyLint avec les paramètres par défaut n'arrête pas de gueuler par contre [:pingouino])
(et j'ai un peu tweaké PyChecker)
(mais faudrait que je leur dise d'arrêter de me faire suer pour des histoires de docstrings [:sisicaivrai])

n°1275150
multani
Dépressionnisé
Posté le 30-12-2005 à 21:36:07  profilanswer
 

masklinn a écrit :

Perso j'utilise les deux en général (PyLint avec les paramètres par défaut n'arrête pas de gueuler par contre [:pingouino])


Ouais, j'ai vu ça [:pingouino]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Problème sur les propriétés

 

Sujets relatifs
problème de scriptProblème sur un exo de C [RESOLU]
Problème d'écriture XMLprobleme avec Smarty
Petit probleme php de traitement de chaine (string) assez basic[swing] Problème avec paintComponent sur un JPanel
probleme aidez moi !!!!!!!!!!!!!!![Résolu] Probleme de mise en page
Problème avec les <Vector> entre Visual Studio 6 et 8.Problème de propriétés avec un composant C++Builder 5
Plus de sujets relatifs à : Problème sur les propriétés


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR