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/

Responder a