Hmm, no se realmente lo que pretendes hacer, por lo que no se si es buena idea hacer lo que planteas, pero puede que te resuelva tu duda con una metaclase como esta:
class FooMeta(type): clases = { 'mp3': Mp3Class, 'meaning': MeanginClass, } def __call__(cls, *args, **kw): tipo = kw.pop('type', None) if tipo in cls.clases: return type.__call__(cls.clases[tipo], *args, **kw) else: return None class metafile(object): __metaclass__ = FooMeta Basicamente al crear el objecto, interceptas y mirar lo que realmente necesitas, devuelves un objeto preciso dependiendo del tipo que tu le pases. Repito, no se si es la major solucion, seguramente habra una mejor y mas elegante, pero ahi no puedo ayudarte ya que desconosco los detalles. Esto es un ejemplo, nisiquiera he probado si funciona. Un saludo. Andrei. El día 13 de abril de 2011 12:33, "Arturo Muñoz T." <agt...@gmail.com> escribió: > 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? > > > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity"
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/