Constante em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Constante Python ao definir uma classe
  2. Constante Python usando uma função
  3. Constante Python usando a função namedtuple()
Constante em Python

Este tutorial irá apresentar vários métodos para criar uma constante ou obter propriedades semelhantes a constantes em Python. Não podemos declarar uma constante em Python, pois não existe uma palavra-chave como const. Mas podemos criar nossa própria constante das seguintes maneiras.

Constante Python ao definir uma classe

Uma maneira é criar uma classe e declarar seu atributo como somente leitura para ser usado como uma constante. O código de exemplo a seguir demonstra como declarar o atributo class como somente leitura em Python.

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


a = constant()

print(a.val)
a.val = 23

Produção:

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

Outra maneira de criar uma constante em Python é criar uma classe e sobrescrever __setattr__(self, *_) para retornar a exceção sempre que alguém tentar atribuir um novo valor ao atributo de classe.

Podemos usar um atributo de classe como uma constante em Python da seguinte maneira.

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"

Produção:

abcd
Exception: Tried to change the value of a constant

Constante Python usando uma função

Também podemos criar uma função que sempre retorna o mesmo valor que queremos atribuir à constante. O código de exemplo a seguir demonstra como usar a função para obter o valor constante em Python.

def constant():
    return "xyz"


constant()

Produção:

xyz

Constante Python usando a função namedtuple()

Também podemos usar a função namedtuple(typename, field_names) do módulo collections para criar uma constante em Python. A função namedtuple() retorna uma nova subclasse de tupla de nome typename, e os field_names são uma lista de identificadores de string. Como em Python, uma tupla é imutável, o valor de uma nova subclasse de tupla não pode ser alterado para que possa ser usada como uma constante.

O exemplo abaixo demonstra como usar a função namedtuple() para criar uma constante em Python.

from collections import namedtuple

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

Produção:

54
abc

Agora, vamos tentar alterar o valor da tupla.

from collections import namedtuple

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

Produção:

AttributeError: can't set attribute