Constante en Python
- Constante Python en définissant une classe
- Constante Python utilisant une fonction
-
Constante Python utilisant la fonction
namedtuple()
Ce didacticiel présentera plusieurs méthodes pour créer une constante ou obtenir des propriétés de type constante en Python. On ne peut pas déclarer une constante en Python, car il n’y a pas de mot-clé comme const
. Mais nous pouvons créer notre propre constante des manières suivantes.
Constante Python en définissant une classe
Une façon consiste à créer une classe et à déclarer son attribut en lecture seule à utiliser comme constante. L’exemple de code ci-dessous montre comment déclarer l’attribut de classe en lecture seule en Python.
class constant(object):
__slots__ = ()
val = 457
a = constant()
print(a.val)
a.val = 23
Production:
457
AttributeError: 'constant' object attribute 'val' is read-only
Une autre façon de créer une constante en Python est de créer une classe et de remplacer le __setattr__(self, *_)
pour renvoyer l’exception chaque fois que quelqu’un essaie d’attribuer une nouvelle valeur à l’attribut de classe.
Nous pouvons utiliser un attribut de classe comme constante en Python de la manière suivante.
class Constant(object):
CONST = "abcd"
def __setattr__(self, *_):
raise Exception("Tried to change the value of a constant")
a = Constant()
print(a.CONST)
a.CONST_NAME = "a"
Production:
abcd
Exception: Tried to change the value of a constant
Constante Python utilisant une fonction
Nous pouvons également créer une fonction qui renvoie toujours la même valeur que nous voulons attribuer à la constante. L’exemple de code ci-dessous montre comment utiliser la fonction pour obtenir la valeur constante en Python.
def constant():
return "xyz"
constant()
Production:
xyz
Constante Python utilisant la fonction namedtuple()
On peut aussi utiliser la fonction namedtuple(typename, field_names)
du module collections
pour créer une constante en Python. La fonction namedtuple()
renvoie une nouvelle sous-classe de tuple de nom typename
, et les field_names
sont une liste d’identifiants de chaîne. Comme en Python, un tuple est immuable, la valeur d’une nouvelle sous-classe de tuple ne peut pas être modifiée afin qu’elle puisse être utilisée comme constante.
L’exemple ci-dessous montre comment utiliser la fonction namedtuple()
pour créer une constante en Python.
from collections import namedtuple
my_consts = namedtuple("Constants", ["const1", "const2"])
consts = my_consts(54, "abc")
print(consts.const1)
print(consts.const2)
Production:
54
abc
Essayons maintenant de changer la valeur du tuple.
from collections import namedtuple
my_consts = namedtuple("Constants", ["const1", "const2"])
consts = my_consts(54, "abc")
consts.const1 = 0
Production:
AttributeError: can't set attribute