Les Conventions sur la création de constantes en Python
Je suis en train d'écrire une application qui a besoin de trouver le schéma d'une base de données, l'ensemble des moteurs. À cette fin, je suis en train d'écrire un petit adaptateur de base de données à l'aide de Python. J'ai décidé de commencer par écrire une classe de base qui décrit les fonctionnalités dont j'ai besoin, et puis le mettre en œuvre à l'aide de classes qui héritent de cette base. Le long du chemin, j'ai besoin de mettre en œuvre certaines constantes qui doivent être accessibles à travers toutes ces classes. Certaines de ces constantes doivent être combinées à l'aide de style C OU au niveau du bit.
Ma question est,
- ce qui est la façon standard de partage de ces constantes?
- quelle est la bonne façon de créer des constantes qui peuvent être combinés? Je me réfère à
MAP_FIXED | MAP_FILE | MAP_SHARED
code de style que C le permet.
Pour le premier, je suis venu à travers les threads où toutes les constantes ont été mis dans un module premier. Pour ce dernier, j'ai brièvement pensé à utiliser un dict de booléens. Ces deux semblait trop difficile. J'imagine que c'est assez courant, et pense que certaines bon moyen doit en effet exister!
OriginalL'auteur susmits | 2011-08-16
Vous devez vous connecter pour publier un commentaire.
Tout au long de la bibliothèque standard, la méthode la plus courante consiste à définir des constantes comme les variables de niveau module à l'aide de UPPER_CASE_WITH_UNDERSCORES noms.
Les mêmes règles que dans C s'appliquent. Vous devez vous assurer que chaque valeur de la constante correspond à un seul et unique bits, c'est à dire des pouvoirs de 2 (2, 4, 8, 16, ...).
La plupart du temps, les gens utilisent des nombres hexadécimaux pour cela:
Certains préfèrent un plus lisible par l'homme, le style, le calcul de la constante de valeurs dynamiquement à l'aide d'opérateurs de décalage:
En Python, vous pouvez également utiliser la notation binaire pour rendre le tout encore plus évident:
Mais depuis cette notation est long et difficile à lire, à l'aide hexadécimal ou binaire changement de notation est probablement préférable.
OriginalL'auteur Ferdinand Beyer
Constantes vont généralement au niveau du module. De PEP 8:
Si vous voulez des constantes au niveau de la classe, de les définir comme des propriétés de la classe.
OriginalL'auteur Mike DeSimone
Vous trouverez souvent des constantes au niveau mondial, et ils sont l'un des quelques variables qui existent là-haut. Il y a aussi des gens qui écrivent Constante des espaces de noms à l'aide dicts ou des objets comme cette
Il y a des gens qui les ont mis dans des modules et d'autres qui s'attachent comme des variables de classe que les instances d'accès. La plupart du temps, ses goûts personnels, mais seulement quelques variables globales ne pouvez pas vraiment de mal que bien.
OriginalL'auteur Jakob Bowyer
Stdlib est une grande source de connaissances exemple de ce que vous voulez peut être trouvé dans doctest code:
N. B: Le module re également utiliser bit-wise argument de style aussi, si vous voulez un autre exemple.
OriginalL'auteur mouad
De nommage est généralement UPPERCASE_WITH_UNDERSCORE, et ils sont généralement de niveau module, mais parfois ils vivent dans leur propre classe. Une bonne raison d'être dans une classe, c'est quand les valeurs sont spéciales, telles que besoin d'être des puissances de deux:
Si vous voulez être en mesure d'exporter ces constantes au niveau du module (ou tout autre espace de noms), vous pouvez ajouter les lignes suivantes à la classe:
et puis
OriginalL'auteur Ethan Furman