Différence entre membre dans et hors __init__ [RESOLU] - Python - Programmation
Marsh Posté le 07-08-2007 à 20:01:49
Code :
|
Avec la première solution, total est une variable d'instance*, elle n'est accessible que si tu créé une instance de cette classe.
L'autre solution, c'est une variable de classe*, tu peux l'utiliser sans avoir à instancier un objet toto (cf mon exemple ci dessus).
*Le vocabulaire peut être maladroit, je sais que souvent les gens sont pas d'accord sur ces termes
Marsh Posté le 07-08-2007 à 23:32:30
c0wb0y a écrit :
|
J'ai compris. Dans le 2° cas, c'est grosso-modo comme une variable statique de classe. J'ai compris merci.
Marsh Posté le 08-08-2007 à 10:32:13
Sve@r a écrit : J'ai compris. Dans le 2° cas, c'est grosso-modo comme une variable statique de classe. J'ai compris merci. |
C'est exactement ça, ça correspond à une static en Java.
BTW c0wb0y quand tu veux créer une méthode vide, ne pas utiliser return, utiliser "pass" genre
Code :
|
et accessoirement, tu n'est pas obligé de définir __init__ (il y a un constructeur vide avec arity 1 par défaut), donc pour ton 2e cas tu pouvais écrire directement
Code :
|
Marsh Posté le 08-08-2007 à 20:34:50
Masklin: En fait j'ai juste copier/coller le code de Sve@r dans IDLE
Mais merci des infos, je ne connais pas spécialement bien python (j'ai plus l'impression de programmer "en Django" qu'en Python en bossant avec ce framework (kilébien )).
Marsh Posté le 09-08-2007 à 01:31:32
masklinn a écrit :
|
Ah !!! J'avais déjà vu "pass" dans un "try... except" et j'avais compris qu'il s'agissait grosso-modo d'une commande neutre style "il faut une commande pour que la syntaxe soit correcte mais je veux rien faire donc je mets pass"
ex:
Code :
|
Bien entendu, on peut simplifier en mettant "if not machin" mais on a le même truc en Bourne Shell
Code :
|
Et comme en Bourne Shell on peut pas faire "if not", on est bien obligé d'en passer par là
Donc quand j'ai tapé mon exemple, j'ai failli en effet mettre "pass" mais j'ai choisi return...
masklinn a écrit : et accessoirement, tu n'est pas obligé de définir __init__ (il y a un constructeur vide avec arity 1 par défaut) |
ouaip, ça je savais mais bon, comme je débute et que je voulais une comparaison entre 2 codes, j'ai essayé de rendre les 2 codes aussi semblables que possibles pour que seules les différences concernant ma question en ressortent mieux
Marsh Posté le 09-08-2007 à 09:15:30
Sve@r a écrit : |
C'est exactement ça, Python requiert au moins un "statement" (n'importe quelle expression python) au sein d'un bloc (if, elif, else, try, except, finally, while, for, with, def, class) et un commentaire ou une ligne vide n'est pas un statement, donc on a "pass" qui est le "null statement".
Cf http://docs.python.org/ref/pass.html pour la doc officielle.
Que je recommande de lire, accessoirement, c'est comme ça que j'ai appris qu'on pouvait écrire
Code :
|
ou
Code :
|
Marsh Posté le 09-08-2007 à 09:17:23
Accessoirement, le forum est capable de coloriser les langages, il suffit de remplacer une balise [code] normale par une balise [code=nomdulangage], genre [code=python], [code=ruby], etc...
Marsh Posté le 09-08-2007 à 10:32:25
masklinn a écrit : c'est comme ça que j'ai appris qu'on pouvait écrire
|
Ouaip. Je viens de regarder les boucles. J'ai même tapé un truc sur idle
Code :
|
Ben je vois pas la différence avec la même boucle sans le else
Code :
|
masklinn a écrit : Accessoirement, le forum est capable de coloriser les langages, il suffit de remplacer une balise [code] normale par une balise [code=nomdulangage], genre [code=python], [code=ruby], etc... |
J'ai réédité tous mes posts précédents. Mais il connait pas [code=shell]
Marsh Posté le 15-08-2007 à 12:01:07
Sve@r a écrit :
|
Tiré de la doc :
Citation : |
Donc, un break dans la boucle n'exécute pas le else.
(Merci Masklinn de m'avoir fait découvrir le else: après les boucles )
Marsh Posté le 15-08-2007 à 12:19:51
multani a écrit : Tiré de la doc :
|
Ah oui, c'est assez subtil. Ptet que le jour viendra où j'aurai besoin de ce type de comportement mais là...
multani a écrit : (Merci Masklinn de m'avoir fait découvrir le else: après les boucles ) |
Idem
Marsh Posté le 15-08-2007 à 12:20:30
Sve@r a écrit : |
Il connait code=bash par contre
Code :
|
Marsh Posté le 07-08-2007 à 19:28:44
Bonjour,
Je suis un débutant en Python mais j'ai commencé à développer qq applis. Et là, je me trouve devans une interrogation
Quelle est la différence entre ces deux écritures de membre d'une classe
En vous remerciant
Message édité par Sve@r le 09-08-2007 à 14:40:01
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.