L'importation d'une longue liste de constantes pour un fichier Python

En Python, est-il un analogue de la C préprocesseur l'énoncé?:

#define MY_CONSTANT 50

Aussi, j'ai une grande liste de constantes j'aimerais importer à plusieurs classes. Est-il un analogue de déclarer les constantes comme une longue séquence d'instructions comme ci-dessus dans un .py fichier et l'importer dans un autre .py fichier?

Modifier.

Le fichier Constants.py lit:

#!/usr/bin/env python
# encoding: utf-8
"""
Constants.py
"""

MY_CONSTANT_ONE = 50
MY_CONSTANT_TWO = 51

Et myExample.py lit:

#!/usr/bin/env python
# encoding: utf-8
"""
myExample.py
"""

import sys
import os

import Constants

class myExample:
    def __init__(self):
        self.someValueOne = Constants.MY_CONSTANT_ONE + 1
        self.someValueTwo = Constants.MY_CONSTANT_TWO + 1

if __name__ == '__main__':
    x = MyClass()

Modifier.

Du compilateur,

NameError: "nom global
'MY_CONSTANT_ONE" n'est pas défini"

fonction init dans myExample à la ligne
13 auto.someValueOne =
Les constantes.MY_CONSTANT_ONE + 1 copie
sortie Programme terminé avec le code #1
après de 0,06 secondes.

  • Non, il n'y a pas de préprocesseur. Et non, vous n'irez pas très loin en essayant de code C en Python, ou même essayer de trouver des parallèles.
  • Ce n'est pas la pleine de sperme. La façon dont vous exécutez? python myExample.py devrait donner un traceback sur l'erreur qui comprend les noms de fichier et <module> haut niveau. De Plus, MY_CONSTANT_ONE n'est pas références comme un nom global - vraiment bizarre. Triple-vérifier que ceux qui sont vraiment les fichiers que vous êtes en cours d'exécution (et peut-être de les convertir en ASCII et de la bande de la # encoding: utf8 bits).
  • Merci, j'ai l'impression de bien maintenant, pas encore sûr de savoir pourquoi, mais jamais l'esprit :).
InformationsquelleAutor SK9 | 2011-06-14