Constante en Python

Muhammad Waiz Khan 30 enero 2023
  1. Constante de Python mediante la definición de una clase
  2. Constante de Python usando una función
  3. Constante de Python usando la función namedtuple()
Constante en Python

Este tutorial presentará varios métodos para crear una constante o lograr propiedades similares a las constantes en Python. No podemos declarar una constante en Python, ya que no existe una palabra clave como const. Pero podemos crear nuestra propia constante de las siguientes formas.

Constante de Python mediante la definición de una clase

Una forma es crear una clase y declarar su atributo como de solo lectura para usarlo como una constante. El siguiente código de ejemplo demuestra cómo declarar el atributo de clase como de solo lectura en Python.

class constant(object):
    __slots__ = ()
    val = 457


a = constant()

print(a.val)
a.val = 23

Producción :

457
AttributeError: 'constant' object attribute 'val' is read-only

Otra forma de crear una constante en Python es crear una clase y anular __setattr__(self, *_) para devolver la excepción cada vez que alguien intenta asignar un nuevo valor al atributo de la clase.

Podemos usar un atributo de clase como constante en Python de la siguiente manera.

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"

Producción :

abcd
Exception: Tried to change the value of a constant

Constante de Python usando una función

También podemos crear una función que siempre devuelva el mismo valor que queremos asignar a la constante. El siguiente código de ejemplo demuestra cómo usar la función para obtener el valor constante en Python.

def constant():
    return "xyz"


constant()

Producción :

xyz

Constante de Python usando la función namedtuple()

También podemos usar la función namedtuple(typename, field_names) del módulo collections para crear una constante en Python. La función namedtuple() devuelve una nueva subclase de tupla de nombre typename, y los field_names son una lista de identificadores de cadena. Como en Python, una tupla es inmutable, el valor de una nueva subclase de tupla no se puede cambiar para que pueda usarse como una constante.

El siguiente ejemplo demuestra cómo usar la función namedtuple() para crear una constante en Python.

from collections import namedtuple

my_consts = namedtuple("Constants", ["const1", "const2"])
consts = my_consts(54, "abc")
print(consts.const1)
print(consts.const2)

Producción :

54
abc

Ahora intentemos cambiar el valor de la tupla.

from collections import namedtuple

my_consts = namedtuple("Constants", ["const1", "const2"])
consts = my_consts(54, "abc")
consts.const1 = 0

Producción :

AttributeError: can't set attribute