Constante en Python

Existe-t-il un moyen en Python de créer des objets immuables comme des constantes constantes C et C ++? Lorsque j'ai regardé le CookBook Python et présenté const, j'ai pu empêcher la réaffectation, mais le dictionnaire lui-même peut être manipulé, il ne fonctionne donc pas comme prévu.

Je veux aussi rendre l'état de l'objet immuable. Veuillez me faire savoir s'il existe une bonne méthode générale.

Code du livre de recettes

qiita.rb


puts 'The best way to log and share programmers knowledge.'

const.py


## -*- coding: utf-8 -*-

class _const(object):
    class ConstError(TypeError):pass
    def __setattr__(self, name, value):
        if name in self.__dict__:
            raise self.ConstError("Can't rebind const(%s)" % name)
        self.__dict__[name] = value
        def __delattr__(self, name):
            if name in self.__dict__:
                raise self.ConstError("Can't unbind const(%s)" % name)
            raise NameError(name)

import sys
sys.modules[__name__] = _const()

Programme d'essai

const_test.py


# -*- coding: utf-8 -*-
import const

#La première affectation est OK
const.dic = {'a':'b'}

#C'est une erreur
# const.dic = {'c':'d'}

#Peut être ajouté
const.dic['c'] = 'd'

#Peut être supprimé
del const.dic['a']

print const.dic

Recommended Posts

Constante en Python
Constante en Python
Quadtree en Python --2
Python en optimisation
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Liste triée en Python
AtCoder # 36 quotidien avec Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 18 en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Séquence de touches en Python
Daily AtCoder # 33 en Python
Distribution logistique en Python
AtCoder # 7 tous les jours avec Python
Décomposition LU en Python
Une doublure en Python
AtCoder # 24 tous les jours avec Python
classe de cas en python
Implémentation RNN en python
AtCoder # 8 tous les jours avec Python
Traitement de fichiers en Python
Elasticsearch Reindex en Python
Daily AtCoder # 42 en Python