[Python-es] crear una clase al vuelo

"Arturo Muñoz T." agtugo en gmail.com
Mie Abr 13 12:33:55 CEST 2011


Hola a todos:
Ultimamente los he estado molestando mucho y vengo con una duda 
existencial mas, espero no molestarlos.
Quiero crear una clase que recolecte informacion de una palabra en 
internet como: significado, pronunciacion en mp3, etc.
Entonces pense en crear una clase para cada tipo de informacion.

class Mp3(object):
     def __init__(self, word, directory)
     self.word = word
     self.directory = directory
     self. download_mp3(word)
     # Por aqui anda la funcion download_mp3(word)

class Meaning(object):
     def __init__(self,word)
     self.word = word
     self.meaning = self.search_meaning(word)
     # Por aqui anda la funcion search_meaning(word)

y tal vez agregar mas con el tiempo y juntarlo todo en una clase,
pero que la clase me de la opcion de por ejemplo solo usar
todo lo relacionado con Meaning o todo lo relacionado con Mp3

class metafile(Mp3, Meaning) #duda =¿se puede condicionar la herencia? 
Por ejemplo: para que herede solo de Mp3
     def __init__(self,**kwargs):       #pensaba en pasar algo asi (word 
= 'pepe', Mp3 = False , Meaning= True)

         if( kwargs.has_key('word'))
             self.word = word
         if( kwargs.has_key('directory'))
             self.directory = directory
         if(args['Mp3'] ):
             Mp3.__init__(self. self.word)
         if(args['Meaning']):
             Meaning.__init__(self. self.word, self.directory)



El problema con esto es que si quiero agregar otra clase tengo que 
modificar muchas cosas, tal vez tenga mas atributos
en __init__ y cosas asi. ¿Se puede crear esto de manera automatica? 
Encontre esto sobre metaprogramacion:
http://crysol.org/node/600
http://jjinux.blogspot.com/2005/03/python-create-new-class-on-fly.html

type y exec parecen ser mis herramientas para lo que quiero hacer, 
¿Creen que esta es la solución o estoy obviando algo?







Más información sobre la lista de distribución Python-es