|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Laurent Pointal <laurent.pointal@limsi.fr> a écrit :
> setattr(self,dico[p],False) > > Ceci dit, si tu n'as que des vrai/faux, tu pourrais aussi travailler > avec un set qui contienne les mots clés présents... > > cles = set(sys.argv[1:]) > if x in cles : .... Arf, ce ng, que du bonheur (normal, c'est python ;-)) Merci ! -- http://scipy.org/FredericPetit |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
fred a écrit :
> Bruno Desthuilliers <bruno.42.desthuilliers@wtf.websiteburo.oops.com > a écrit : > >> fred a écrit : >>> Bruno Desthuilliers <bdesth.quelquechose@free.quelquepart.fr> a écrit : >>> >>>> question con: c'est quoi, le but de la manoeuvre, au juste ? >>> réponse con : merci d'avoir posé la question. >>> Parce que en fait, je n'en ai pas besoin, de dico. >>> Et en plus, ça vous évite un post super long pour que je vous exlique >>> par le menu ma tambouille, alors... >> Bin, tu fais comme tu veux, mais le but de la question était de voir >> si y avait pas mieux à faire qu'un truc tordu... > Mais justement, le fait d'écrire mon petit laïus pour expliquer la chose > m'a fait voir que c'était vraiment un truc tordu, et que donc, > de truc tordu, y en a pu. Lol !-) > Bon, pour résumer, je passe des arguments en ligne de commande, > des « mot-clés », qui sont associés à des variables (que j'appelle « flag > » parce que ce sont des booléens). > > Le but est de détecter quels sont les mot-clés qui sont passés en ligne > de commande (auquel cas le flag est mis à True) pour pouvoir les repasser à False > par la suite parce que. Tu sais qu'il existe des packages pour ça dans la bibliothèque standard? Mais bon, même si tu tiens à réinventer la roue... > J'ai donc construit mon dico comme ça > > {'mot clé': 'variable_flag'} > > et ensuite, je fais un > > if (p in dico.keys()): > exec('self.'+dico[p]+' = False') Hem... Tu pouvais pas dire tout de suite qu'il s'agissait d'attributs d'un objet, non ? if (p in dico): # pas besoin du keys() setattr(self, dico[p], False) > Ok, d'aucuns trouveront peut-être ça tordu quand même, > mais nettement moins que mon idée initiale. Oh bonne mère... je préfère ne pas savoir ce que c'était, alors... > Et ça marche du tonerre. > > Bon, le coup du exec ne me plaît pas des masses, ok... > Moi non plus. Dans 99,9% des fois où j'ai utilisé un exec, c'est soit que je ne connaissais pas la bonne façon de faire, soit que mon design puait des pieds... |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
Bruno Desthuilliers <bruno.42.desthuilliers@wtf.websiteburo.oops.com > a écrit :
> Tu sais qu'il existe des packages pour ça dans la bibliothèque standard? Voui, je m'en doute. Mais je n'ai jamais été regarder. Et pis deuxième, j'ai tout un tas de sortes d'arguments à passer : "a", "a=1", "a='(2 2)'", "a='(2 2), (3 3)'" des trucs dans ce genre-là... > Mais bon, même si tu tiens à réinventer la roue... On est là pour s'amuser, non ? Et puis pour apprendre. >> J'ai donc construit mon dico comme ça >> {'mot clé': 'variable_flag'} >> et ensuite, je fais un >> if (p in dico.keys()): >> exec('self.'+dico[p]+' = False') > > Hem... > > Tu pouvais pas dire tout de suite qu'il s'agissait d'attributs d'un > objet, non ? Visiblement, non :-))) Je ne voyais pas la pertinence de cette info, c'est tout. > if (p in dico): # pas besoin du keys() > setattr(self, dico[p], False) Laurent P. a déjà répondu là-dessus. Mais je prends note du « pas besoin de keys() ». > >> Ok, d'aucuns trouveront peut-être ça tordu quand même, >> mais nettement moins que mon idée initiale. > > Oh bonne mère... je préfère ne pas savoir ce que c'était, alors... Ah tu vois, je t'avais prévenu ! :-) Mais à y bien réfléchir, je crois que c'était du grand n'importe quoi. Je ne devais pas avoir les idées bien claires au moment où j'ai posté. Et de toute façon... voir ligne juste en-dessous. >> Et ça marche du tonerre. >> Bon, le coup du exec ne me plaît pas des masses, ok... >> > > Moi non plus. Dans 99,9% des fois où j'ai utilisé un exec, c'est soit > que je ne connaissais pas la bonne façon de faire, soit que mon design > puait des pieds... D'accord avec toi. En l'occurence, je ne connaissais pas la bonne façon de faire pour ce cas précis. -- http://scipy.org/FredericPetit |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
Bonsoir !
dico={'AA':1,'BB':22,'CC':333} globals().update(dico) print AA, BB, CC |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
Bruno Desthuilliers <bdesth.quelquechose@free.quelquepart.fr> a écrit :
> fred a écrit : >> Bruno Desthuilliers <bruno.42.desthuilliers@wtf.websiteburo.oops.com > a écrit : >> >>>Tu sais qu'il existe des packages pour ça dans la bibliothèque standard? >> Voui, je m'en doute. >> Mais je n'ai jamais été regarder. > > Tu a tort. Et le tort tue. > > Ok ---------->[] C'est bon, on est vendredi ;-) >> Et pis deuxième, j'ai tout un tas de sortes d'arguments à passer : >> "a", "a=1", "a='(2 2)'", "a='(2 2), (3 3)'" >> des trucs dans ce genre-là... >> >>>Mais bon, même si tu tiens à réinventer la roue... >> On est là pour s'amuser, non ? > > Heu... Pas seulement, non. Moi j'y suis aussi pour nourrir ma famille !-) Tu nourris ta famille à répondre sur fclp ??? >> Je ne voyais pas la pertinence de cette info, c'est tout. > > Et pourtant... Comprend bien qu'il y a en Python une différence assez > fondamentale entre un binding (ie : a = 42) et un appel de méthode Ok, ça, c'est un « binding ». Je ne savais pas. > (obj.a = 4 => obj.__setattr__('a', 42)). > >> En l'occurence, je ne connaissais pas la bonne façon de faire >> pour ce cas précis. > > D'où l'intéret des questions bien formulées !-) Tout à fait ! Et pour ça, faut déjà avoir les idées bien claires... Et ce n'est pas toujours le cas... :-p -- http://scipy.org/FredericPetit |
|
|
|
#14 |
|
Messages: n/a
Hébergeur: |
"Méta-MCI \(MVP\)" <enleverlesX.XmcX@XmclaveauX.com> a écrit :
> Bonsoir ! > > dico={'AA':1,'BB':22,'CC':333} > globals().update(dico) > print AA, BB, CC Pétard !!!! Ça, c'est énorme. Et beau à la fois. Merci ! -- http://scipy.org/FredericPetit |
|
|
|
#15 |
|
Messages: n/a
Hébergeur: |
fred <fredantispam@free.fr> a écrit :
> "Méta-MCI \(MVP\)" <enleverlesX.XmcX@XmclaveauX.com> a écrit : > >> Bonsoir ! >> >> dico={'AA':1,'BB':22,'CC':333} >> globals().update(dico) >> print AA, BB, CC > Pétard !!!! > > Ça, c'est énorme. > > Et beau à la fois. Dis moi, Bruno, ce n'était pas si tordu que ça ma question, alors ??? :-) Et puis Michel l'a comprise, donc... :-p Bon, ok, je -> [] -- http://scipy.org/FredericPetit |
|
|
|
#16 |
|
Messages: n/a
Hébergeur: |
Re !
Il faut savoir que : - moi, je suis un peu tordu - j'ai vu ça (et répondu) en rentrant de (déplacement à) Paris, ce qui n'était pas fait pour arranger les choses - attention aux contraintes liées aux variables globales (bien que l'on puisse utilise locals(), à l'intérieur d'une fonction - cela revient à des déclarations non-explicites, avec des risques de perte de lisibilité @+ MCI |
|
![]() |
| Outils de la discussion | |
|
|