Constante en Python

Muhammad Waiz Khan 30 janvier 2023
  1. Constante Python en définissant une classe
  2. Constante Python utilisant une fonction
  3. Constante Python utilisant la fonction namedtuple()
Constante en Python

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