Valentino Volonghi aka Dialtone ha scritto:
exec "class Foo(object): pass"
Foo.ciao
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
AttributeError: type object 'Foo' has no attribute 'ciao'

Il vero danno e` sovrascrivere nomi gia` esistenti nella tua applicazione oltre ad altri che spendendo abbastanza tempo si potrebbero trovare (attachi analoghi all'SQL injection ma fatta col codice).

Non ne vale proprio la pena... Meglio evitare la exec del tutto e assieme a quella la eval().

quella dell' object no ... se la classe non esiste viene creata base, senza niente come argomento, quindi su un controllo a-zA-Z_ dovrei stare tranquillo ma esiste un modo per evitare eval sono sempre pronto per sceglierlo, è che non sapevo ne di type("NomeClasse", (), {}) ne di inspect ... grazie a tutti, c'è da studiare qui.

Saluti,
   Andrea Giammarchi
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a