[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