[Linuxtrent] Re: Python e Php

  • From: Emanuele Olivetti <olivetti@xxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 4 Dec 2003 14:45:11 +0000

On Thu, Dec 04, 2003 at 03:19:28PM +0100, Stefano Morandi wrote:
> $this->modello =& new $this->_datiModello['nome']();
> 
> Questo codice crea un'istanza di una classe il cui nome e' contenuto nella 
> variabile "$this->_datiModello['nome']"
> 
> Una cosa analoga accade per "include_once(..."
> 
> E in python? Se po' fa'?

La prima cosa che mi viene in mente e' creare un dizionario di
nomi -> classi in modo che tu possa creare un'istanza fornendo
il nome sottoforma di stringa. Esempio:

class Uno(object):
        pass

class Due(object):
        pass

corrispondenza={ "uno" : Uno , "due" : Due }

scelta=raw_input()

try:
        istanza = corrispondenza[scelta]()
except:
        print "Non trovo la classe", scelta


Alternativamente puoi cercare nel __dict__ del modulo questa
corrispondenza, solo che la cosa non e' ovvia se le tue
classi sono sparse in tanti moduli. Se sono tutte nel modulo
"pippo" ti basta fare cosi':

scelta=raw_input()
try:
  istanza=pippo.__dict__[scelta]()
except:
  print "Non trovo la classe", scelta

In entrambe i case, per passare argomenti al costruttore, puoi usare
*args visto a lezione.

Ciao

                                                Emanuele
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: