¿Meexplican los paquetes?
Luis Rodrigo Gallardo Cruz
lrgallardo en interservice.net
Lun Dic 22 19:12:48 CET 2003
On Mon, Dec 22, 2003 at 02:32:29AM +0100, Chema Cortés wrote:
> ¿Qué está ocurriendo?
> Es algo complejo de explicar, pero voy a intentarlo.
> ...
> No se si me he explicado, ya que también a mí me cuesta entenderlo.
Fué suficiente, gracias.
> La solución al problema pasa por no utilizar referencias a submódulos que
> incluyan explícitamente la jerarquía de módulos del paquete, y dejar así que
> el mecanismo de importación devuelva la referencia correcta.
>
> En general, es muy recomendable que en lugar de
>
> import tst.db.Propiedad
> a=tst.db.Propiedad
>
> se haga siempre
>
> from tst.db import Propiedad
> a=Propiedad
Me imagino que es por que así ya sabe que tst.db ya fué importado, así
que usa esa referencia en vez de intentar buscar de nuevo.
Otra duda:
Si en vez de
import tst.db.Propiedad
en el __init__.py hago
import Propiedad
parece que todo funciona. El import busca Propiedad primero como
submódulo de tst.db y como lo encuentra ahí todo sirve. Y si despúes
hago
a = Propiedad
a tiene la referencia correcta. Pero lo que en realidad quiero hacer
no es esto, obviamente. Lo que quiero es llamar a una función definida
en otro módulo, que a su vez guarda las referencias a Propiedad y que
despues uso desde _otro_ lado, con la intención de poder ordenar que
se refresque la definición de Propiedad.
reload = Otro_modulo.reload_maker(Propiedad, otros_args)
La duda es: ¿Funciona? De lo que quiero estar seguro es de que vamos a
cargar el módulo correcto, aun que lo llamemos desde otro módulo. Como
esto es para una herramienta genérica, no puedo garantizar que el otro
módulo no va a tener un submódulo Propiedad, por ejemplo. El reload en
sí ya sirve, pero al tratar de meter db como subpaquete de otro fué
que falló.
> Hay un viejo ensayo de Guido que explica algo de todo ésto:
> http://www.python.org/doc/essays/packages.html
Lo leí, pero de todas formas me ayudaste más tú.
--
Rodrigo Gallardo
PGP Key ID: ADC9BC28
Fingerprint: 7C81 E60C 442E 8FBC D975 2F49 0199 8318 ADC9 BC28
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20031222/afe931b2/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es