[Python-es] Constantes en Python

Moises Brenes moises.brenes en gmail.com
Mie Sep 22 18:17:49 CEST 2010


2010/9/20 Rolando Espinoza La Fuente <darkrho en gmail.com>:
> 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

Si, y de paso algo que no quisiera que sucediera, podria traer confusion

> # constant.py
> import const



> FREE_TRIAL_ID = const.FREE_TRIAL_ID = 1
Es posible evitar esto?


> # prueba.py
> from constant import FREE_TRIAL_ID
>
> print FREE_TRIAL_ID
>
> FREE_TRIAL_ID = 2
>
> print FREE_TRIAL_ID


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