[Python] Come ottenere la lista delle classi contenute in un modulo

Daniele Zambelli daniele.zambelli a gmail.com
Lun 27 Feb 2012 15:47:22 CET


Salve.

Sto scrivendo un eserciziario. Il programma principale cerca gli
esercizi da proporre in una directory dove si trovano diversi file
.py.
Ogni file contiene alcune classi e ogni classe corrisponde ad un tipo
di esercizi.

Esempio:

La cartella esercizi contiene i file:
eq2.py
eq2+.py
...

Ognuno di questi file contiene una docstring formata da tante righe
che contengono, per ogni esercizio:
- una descrizione,
- il nome della classe

Esempio:

"""
Eq. binomie;                                         EqBinrrcz
Eq. binomie rad. razionali coeff. interi;            EqBinrqcz
Eq. biquadratiche: rad. intere, coeff. interi;       EqBiquadrzcz
Eq. trinomia: rad. intere, coeff. interi;            EqTriquadrzcz
Eq. 3 gr. scomponibile: rad. intere, coeff. interi;  Eq3rqcz
"""

Il programma principale si crea la lista di tutti i file *.py presenti
nella cartella esercizi, poi li importa e lavorando sulla docstring
ricava le descrizioni degli esercizi e il nome delle classi che li
implementano:

  def loadese(self):
      nomifile=[nf[:-3] for nf in os.listdir(os.curdir+DIRESE) if
nf[-3:]=='.py']
      sys.path.append(sys.path[0]+DIRESE)
      self.modules=[__import__(nf) for nf in nomifile]
      self.scelte=[]
      for mod in self.modules:
          es=[e.split(';') for e in mod.__doc__.strip('\n').split('\n')]
          for e in es:
              self.scelte.append((e[0].strip(), mod, e[1].strip()))

È possibile mettere la descrizione dell'esercizio nella docstring di
ogni classe e ricavare direttamente le classi presenti in ogni modulo
senza scrivere esplicitamente l'elenco a inizio file?

Cioè vorrei ottenere la lista dell classi contenute in un modulo.

Scusate per la lunghezza e grazie dell'attenzione.

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,


Maggiori informazioni sulla lista Python