[Python] Istanziare oggetti dinamicamente

Carlo C8E Miron carlo.miron a gmail.com
Lun 16 Apr 2007 14:45:00 CEST


Il 16/04/07, Sbaush<sbaush a gmail.com> ha scritto:
> Ciao a tutti.
> Ho un problema al quale non ho trovato una soluzione nonostante la
> ricerca on web, e riguarda la creazione di istanze di classi
> richiamandole attraverso variabili.
> Mi spiego:
> Ho una classe chiamata ad esempio MyClass e una MyClass2.
> E' possibile istanziare la classe senza "conoscerne" il nome? Cioè se
> ho una stringa con dentro il nome della classe, è possibile istanziare
> la classe usando il nome dentro la stringa?
> In questa maniera otterrei una automatizzazione dell'istanziazione di
> una classe, cosicchè cambiando il valore della stringa otterrei
> l'istanza della classe con il nome della stringa...
> Più o meno come si fa per l'import dinamico di __import__(), ma
> orientato all'uso con gli oggetti.
>
> Mi piacerebbe fare una cosa del genere:
>
> theClass1 = 'MyClass'
> theClass2 = 'MyClass2'
> theClass1()
> theClass2()
>
> Non mi piacerebbe dover inserire controlli sulla stringa riguardanti
> il suo contenuto, del tipo
> if theClass1=='MyClass':
>    MyClass()
> if theClass2=='MyClass2':
>    MyClass2()

Qualcosa tipo:

>>> class One(object): pass
...
>>> class Two(object): pass
...
>>> an_object = vars()["One"]()
>>> an_object.__class__
<class '__main__.One'>
?

> Si è capito il mio problema?
> Grazie Mille.

Prego, ciao

(c)
-- 
Carlo C8E Miron
Open Classes Solution Architect


Maggiori informazioni sulla lista Python