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