[Python-es] Constantes en Python

Rolando Espinoza La Fuente darkrho en gmail.com
Mar Sep 21 02:49:41 CEST 2010


2010/9/20 Moises Brenes <moises.brenes en gmail.com>:
[...]
> CASO #1
> --
> import const
>
> print const.FREE_TRIAL_ID
> --
>
> ERROR  #1
> --
> Traceback (most recent call last):
>  File "app.py", line 3, in <module>
>    print const.FREE_TRIAL_ID
> AttributeError: _const instance has no attribute 'FREE_TRIAL_ID'

Si FREE_TRIAL_ID esta definido en constant.py, deberías
importarlo/ejecutarlo primero

import constant
import const

print const.FREE_TRIAL_ID


>
> CASO #2
> --
> import constant
>
> print const.FREE_TRIAL_ID
> --
>
> ERROR #2
> Traceback (most recent call last):
>  File "app.py", line 3, in <module>
>    print const.FREE_TRIAL_ID
> NameError: name 'const' is not defined
>

No has importado const, que -supongo- esta importado dentro constant.py

import constant

print constant.const.FREE_TRIAL_ID


> Es decir, no hay error al agregar miembros a const, sino al hacer
> referencia a ellos o al menos eso es lo que veo

Si, por que no estan siendo referenciados correctamente.

Por cierto, en tu primero código:

from constant import const.FREE_TRIAL_ID

es incorrecto. Esto funcionaría:

from constant import FREE_TRIAL_ID

me parece que lo que quieres es:

from const import FREE_TRIAL_ID

A pesar de definirlas en constant.py, tus "constantes" viven en const
por que const es un object.

Creo que lo siguiente trae un resultado interesante

# constant.py
import const

FREE_TRIAL_ID = const.FREE_TRIAL_ID = 1

# prueba.py
from constant import FREE_TRIAL_ID

print FREE_TRIAL_ID

FREE_TRIAL_ID = 2

print FREE_TRIAL_ID


Rolando Espinoza La fuente
www.insophia.com


Más información sobre la lista de distribución Python-es