accéder au __doc__ d'un property - Python - Programmation
Marsh Posté le 16-10-2006 à 08:22:06
Problèmes avec ton code, déjà:
1. __p est une variable de ta classe là, pas de l'instance, c'est sûr que c'est ce que tu veux? Je ne suis pas vraiment persuadé
2. "__" n'a pas à être utilisé pour créer une variable "semi-privée", ce n'est pas son but, et ce n'est pas pour cette raison qu'il a été inclus au langage, utiliser un seul underscore en préfixe si tu veux signifier qu'une variable est privée e.g. "_p"
3. Ta property ne sert strictement à rien. Si une property ne sert à rien, on en met pas. On est en Python là, pas en Java. Je peux comprendre que ce ne soit qu'un exemple, mais ça reste moyen.
4. La 'magie' des properties fait qu'elles ne sont plus accessibles sur les instances, il faut passer par la classe pour accéder aux métadonnées d'une property:
Code :
|
Code :
|
Marsh Posté le 16-10-2006 à 17:48:51
> bonsoir Masklinn, merci pour le coup de main.
1. En effet, j'ai merdé : je voulais bien sûr une instance de classe.
2. Je ne savais pas la différence entre __ et _
3. Non, non, mon exemple était pourri dès le départ.
4. Merci pour le tuyeau.
Et merci encore : je gagne du temps et surtout je comprends mieux mes erreurs.
Marsh Posté le 16-10-2006 à 18:23:59
suizokukan a écrit : 2. Je ne savais pas la différence entre __ et _ |
En fait, "_" ne fait rien, mais comme la notion de "membre privé" n'existe pas en Python ce n'est pas grave. le préfixe "_" signifie "ceci fait partie du fonctionnement interne de ma classe, pas de son API publique, si vous l'utilisez c'est à vos risques et périls, vous risquez de tout pêter ou de voir votre code exploser quand je mettrais à jour mes classes".
"__" par contre fait ce qu'on appelle du "name mangling" (un léger mélange entre le nom de classe et le nom de variable). Ca reste trivial d'accéder à la variable, dans les faits le rôle du name mangling est d'éviter les collisions lorsqu'on utilise beaucoup l'héritage. Pas de créer des illusions de variables privées.
Marsh Posté le 15-10-2006 à 23:50:22
Bonsoir , voici une classe C avec une property p. Je cherche à récupérer l'info. contenue dans p.__doc__ :
J'aimerais bien sûr récupérer comme message : 'TEXTE sur p.'
A la place, j'obtiens le même message que si je demandais un int.__doc__, car ma property p est en effet de type int (suite au __p = 0). Alors comment récupérer malgré tout le p.__doc__ ?
Merci de m'aider !
---------------
rule #1 : trust the python