2013-08-14 22 views
6

Sto costruendo una soluzione con varie classi e funzioni che hanno tutti bisogno di accedere ad alcuni consenti globali per essere in grado di lavorare in modo appropriato. Dato che in Python non esiste lo const, quale sarebbe la migliore pratica per impostare una sorta di consenti globali.come impostare variabili const globali in python

global const g = 9.8 

, quindi sono alla ricerca di un tipo di cui sopra

edit: Che ne dite:

class Const(): 
    @staticmethod 
    def gravity(): 
     return 9.8 

print 'gravity: ', Const.gravity() 

?

+0

non funziona. Chiunque può cambiare 'Const.gravity' o semplicemente sostituire la classe' Const' interamente. La mancanza di qualcosa come 'const' è una decisione deliberata del design; Python rende molto difficile far rispettare quel codice che non toccherà qualcosa che non dovrebbe. Invece, se non dovresti toccare qualcosa, la pratica standard è semplicemente non toccarla. – user2357112

risposta

8

Non è possibile definire le costanti in Python. Se trovi una sorta di trucco per farlo, confonderai tutti.

Per fare questo genere di cose, di solito si dovrebbe solo avere un modulo - globals.py per esempio, che si importa tutto il mondo che ne avete bisogno

+0

Ho il sospetto "Come non c'è const in python":/ – gen

+0

come si chiama il tuo comando? tutto maiuscolo? o qualcosa come c_gravitation? – gen

+1

PEP 8 dice [tutto maiuscolo con caratteri di sottolineatura] (http://www.python.org/dev/peps/pep-0008/#constants). – kindall

6

convenzione generale è quello di definire le variabili con capitale e di sottolineatura e non cambiarlo. Come,

GRAVITY = 9.8 

Tuttavia, è possibile creare costanti in Python utilizzando namedtuple

import collections 

Const = collections.namedtuple('Const', 'gravity pi') 
const = Const(9.8, 3.14) 

print(const.gravity) # => 9.8 
# try to change, it gives error 
const.gravity = 9.0 # => AttributeError: can't set attribute 

Per namedtuple, fare riferimento a documenti here