Bonsoir à tous,
comment passer le string "a='toto',b='titi'" comme suite d'arguments
nommés à un initialisateur de classe. C'est surement simple mais je séche.
session = create_session() for t in tuples: ligne=LigneLog(",".join(([vtop(z) for z in zip(colnames,t)]))) session.save(ligne)
Heu... t'es candidat pour le daily WTF, camarade ???
Bon, comme d'hab quand on est tenté de sortir eval() ou exec(), il y a une bien meilleure solution. Ici, c'est simple : construit un dict au lieu d'une chaine, et passe le dict à ta fonction.
colnames=('date','heure','compte','ipsrc','url1','interdit','status') session = create_session() for t in tuples: ligne = LigneLog(**dict(zip(colnames,t))) session.save(ligne)
session.flush()
Bonsoir à tous,
comment passer le string "a='toto',b='titi'" comme suite d'arguments
nommés à un initialisateur de classe.
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change
pas grand chose. Le problème est le même avec n'importe quelle fonction.
C'est surement simple mais je séche.
Il y a effectivement une solution simple, mais potentiellement dangereuse:
s = "a, b "
class Toto(object):
... def __init__(self, **kw):
... self.__dict__.update(kw)
...
t = eval("Toto(%s)" % s)
t
<__main__.Toto object at 0xb78c6c4c>
session = create_session()
for t in tuples:
ligne=LigneLog(",".join(([vtop(z) for z in zip(colnames,t)])))
session.save(ligne)
Heu... t'es candidat pour le daily WTF, camarade ???
Bon, comme d'hab quand on est tenté de sortir eval() ou exec(), il y a
une bien meilleure solution. Ici, c'est simple : construit un dict au
lieu d'une chaine, et passe le dict à ta fonction.
colnames=('date','heure','compte','ipsrc','url1','interdit','status')
session = create_session()
for t in tuples:
ligne = LigneLog(**dict(zip(colnames,t)))
session.save(ligne)
session = create_session() for t in tuples: ligne=LigneLog(",".join(([vtop(z) for z in zip(colnames,t)]))) session.save(ligne)
Heu... t'es candidat pour le daily WTF, camarade ???
Bon, comme d'hab quand on est tenté de sortir eval() ou exec(), il y a une bien meilleure solution. Ici, c'est simple : construit un dict au lieu d'une chaine, et passe le dict à ta fonction.
colnames=('date','heure','compte','ipsrc','url1','interdit','status') session = create_session() for t in tuples: ligne = LigneLog(**dict(zip(colnames,t))) session.save(ligne)
session.flush()
jean-marc pouchoulon
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change pas grand chose. Le problème est le même avec n'importe quelle fonction.
yep. J'avais fait un effort avec écrivant initialiseur au lieu de
contructeur.
Heu... t'es candidat pour le daily WTF, camarade ???
mmm par principe je refuse les honneurs. Mais je vais faire passer l'url (http://thedailywtf.com/Articles/Avoiding-Development-Disasters.aspx) à mes camarades du bureau à côté.
Bon, comme d'hab quand on est tenté de sortir eval() ou exec(), il y a une bien meilleure solution. Ici, c'est simple : construit un dict au lieu d'une chaine, et passe le dict à ta fonction.
Merci bruno c'est bien ce que je cherchais.
colnames=('date','heure','compte','ipsrc','url1','interdit','status') session = create_session() for t in tuples: ligne = LigneLog(**dict(zip(colnames,t))) session.save(ligne)
session.flush()
Merci de vos deux réponses
jean-marc
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change
pas grand chose. Le problème est le même avec n'importe quelle fonction.
yep. J'avais fait un effort avec écrivant initialiseur au lieu de
contructeur.
Heu... t'es candidat pour le daily WTF, camarade ???
mmm par principe je refuse les honneurs. Mais je vais faire passer
l'url (http://thedailywtf.com/Articles/Avoiding-Development-Disasters.aspx)
à mes camarades du bureau à côté.
Bon, comme d'hab quand on est tenté de sortir eval() ou exec(), il y a
une bien meilleure solution. Ici, c'est simple : construit un dict au
lieu d'une chaine, et passe le dict à ta fonction.
Merci bruno c'est bien ce que je cherchais.
colnames=('date','heure','compte','ipsrc','url1','interdit','status')
session = create_session()
for t in tuples:
ligne = LigneLog(**dict(zip(colnames,t)))
session.save(ligne)
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change pas grand chose. Le problème est le même avec n'importe quelle fonction.
yep. J'avais fait un effort avec écrivant initialiseur au lieu de
contructeur.
Heu... t'es candidat pour le daily WTF, camarade ???
mmm par principe je refuse les honneurs. Mais je vais faire passer l'url (http://thedailywtf.com/Articles/Avoiding-Development-Disasters.aspx) à mes camarades du bureau à côté.
Bon, comme d'hab quand on est tenté de sortir eval() ou exec(), il y a une bien meilleure solution. Ici, c'est simple : construit un dict au lieu d'une chaine, et passe le dict à ta fonction.
Merci bruno c'est bien ce que je cherchais.
colnames=('date','heure','compte','ipsrc','url1','interdit','status') session = create_session() for t in tuples: ligne = LigneLog(**dict(zip(colnames,t))) session.save(ligne)
session.flush()
Merci de vos deux réponses
jean-marc
bruno.desthuilliers
On 11 juin, 18:10, jean-marc pouchoulon montpellier.fr> wrote:
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change pas grand chose. Le problème est le même avec n'importe quelle fonct ion.
yep. J'avais fait un effort avec écrivant initialiseur au lieu de contructeur.
Dont j'ai très injustement oublié de tenir compte, mea culpa. Bon, ok, je suis un chieur pédant et pontifiant, voilà, désolé. Mais merci po ur la piqure de rappel, j'en ai besoin de temps en temps !-)
Heu... t'es candidat pour le daily WTF, camarade ???
mmm par principe je refuse les honneurs.
C'est vrai que dans certains cas, on est pris d'une soudaine crise d'humilité. Allez savoir pourquoi...
Mais je vais faire passer l'url (http://thedailywtf.com/Articles/Avoiding-Development-Disasters.aspx ) à mes camarades du bureau à côté.
Une saine lecture en tout état de cause.
(snip)
On 11 juin, 18:10, jean-marc pouchoulon <jean-marc.pouchou...@ac-
montpellier.fr> wrote:
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change
pas grand chose. Le problème est le même avec n'importe quelle fonct ion.
yep. J'avais fait un effort avec écrivant initialiseur au lieu de
contructeur.
Dont j'ai très injustement oublié de tenir compte, mea culpa. Bon, ok,
je suis un chieur pédant et pontifiant, voilà, désolé. Mais merci po ur
la piqure de rappel, j'en ai besoin de temps en temps !-)
Heu... t'es candidat pour le daily WTF, camarade ???
mmm par principe je refuse les honneurs.
C'est vrai que dans certains cas, on est pris d'une soudaine crise
d'humilité. Allez savoir pourquoi...
Mais je vais faire passer
l'url (http://thedailywtf.com/Articles/Avoiding-Development-Disasters.aspx )
à mes camarades du bureau à côté.
On 11 juin, 18:10, jean-marc pouchoulon montpellier.fr> wrote:
Que ce soit un initialiseur (d'instance, d'ailleurs, en fait) ne change pas grand chose. Le problème est le même avec n'importe quelle fonct ion.
yep. J'avais fait un effort avec écrivant initialiseur au lieu de contructeur.
Dont j'ai très injustement oublié de tenir compte, mea culpa. Bon, ok, je suis un chieur pédant et pontifiant, voilà, désolé. Mais merci po ur la piqure de rappel, j'en ai besoin de temps en temps !-)
Heu... t'es candidat pour le daily WTF, camarade ???
mmm par principe je refuse les honneurs.
C'est vrai que dans certains cas, on est pris d'une soudaine crise d'humilité. Allez savoir pourquoi...
Mais je vais faire passer l'url (http://thedailywtf.com/Articles/Avoiding-Development-Disasters.aspx ) à mes camarades du bureau à côté.