Constante em Python
- Constante Python ao definir uma classe
- Constante Python usando uma função
-
Constante Python usando a função
namedtuple()

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.
pythonCopyclass constant(object):
__slots__ = ()
val = 457
a = constant()
print(a.val)
a.val = 23
Produção:
textCopy457
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.
pythonCopyclass 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:
textCopyabcd
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.
pythonCopydef constant():
return "xyz"
constant()
Produção:
textCopyxyz
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.
pythonCopyfrom collections import namedtuple
my_consts = namedtuple("Constants", ["const1", "const2"])
consts = my_consts(54, "abc")
print(consts.const1)
print(consts.const2)
Produção:
textCopy54
abc
Agora, vamos tentar alterar o valor da tupla.
pythonCopyfrom collections import namedtuple
my_consts = namedtuple("Constants", ["const1", "const2"])
consts = my_consts(54, "abc")
consts.const1 = 0
Produção:
textCopyAttributeError: can't set attribute