Foros del Web » Programando para Internet » Python »

¿Existe autoload en Python?

Estas en el tema de ¿Existe autoload en Python? en el foro de Python en Foros del Web. En PHP tenemos spl_autoload_register() para la carga dinámica de clases utilizando sus namespaces, pero en Python no logro encontrar algo parecido. ¿Existe algún equivalente? Si ...
  #1 (permalink)  
Antiguo 28/01/2015, 18:54
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
¿Existe autoload en Python?

En PHP tenemos spl_autoload_register() para la carga dinámica de clases utilizando sus namespaces, pero en Python no logro encontrar algo parecido.

¿Existe algún equivalente? Si es que no, ¿qué otra alternativa hay?
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 28/01/2015, 23:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: ¿Existe autoload en Python?

En python tienes eval que puede ser mas sofisticado que el de PHP.

Existen metaclases donde nosotros definimos como se crearan las clases.
  #3 (permalink)  
Antiguo 29/01/2015, 01:53
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: ¿Existe autoload en Python?

No entiendo cómo podría ayudarme en la autocarga de clases las metaclases.
Si utilizo eval ¿no estaría dejando un hueco de seguridad en mi programa a la vez que estaría incumpliendo el "explícito mejor que implícito"?
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 29/01/2015, 08:42
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: ¿Existe autoload en Python?

Acabo de ver que hace "spl_autoload_register" y creo que mas o menos entiendo entiendo que hace. Ya que no tocaría php ni a 30 metros con un palo. Y como tampoco tenia idea de que lo que tratabas de hacer (sigo sin tener idea pero ahora mas o menos creo que se por donde va).

Asumo que lo quieres hacer es importar una clase o un modulo. Dado un string. ¿Me equivoco?
Si es así, checa importlib (también estoy asumiendo que usas python 2.7 o mejor).

Lo de la cuestión del eval, era porque pensaba que estas generando el código de una clase en un string, de ahí lo de metaclases (si tampoco mencionaste de donde sacaras el código). Pero parece que lo que querías era mas simple.

Otra cosa, python no es como php, si lo tratas de usar python como php te recomiendo mejor quedarte en php.
  #5 (permalink)  
Antiguo 29/01/2015, 09:56
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: ¿Existe autoload en Python?

Muchas gracias razpeitia por tu ayuda. Probaré esta función a ver si me puede ayudar. Lo que quiero hacer son llamadas ciegas, tal y cómo dices, pasando un string, pero también poder utilizar el namespace de una clase para poder utilizarla en otro documento sin tener que llenar la cabecera del archivo con includes.

No trato de utilizar Python cómo si fuera PHP, pero no veo de qué manera se trabaja este asunto en Python; para mi es muy importante porque no trabajo con otra cosa que no sea el paradigma POO. Sí, mi versión es la 2.7 y a la vez estoy con PySide, del Qt 4.8
__________________
Ayúdame a hacerlo por mi mismo.
  #6 (permalink)  
Antiguo 30/01/2015, 15:16
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 8 meses
Puntos: 122
Respuesta: ¿Existe autoload en Python?

En un proyecto grande el importar automáticamente las clases puede causarte varios problemas. Lo mejor es que seas ordenado e importes sólo lo que necesitas, te recomiendo mucho que le des una leída a la guía de estilo de Python: https://www.python.org/dev/peps/pep-0008/#imports

Vas a notar que muchas cosas son muy diferentes a cómo se hacen en PHP pero por una buena razón.

Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.