Gibt es in Python eine Möglichkeit, unveränderliche Objekte wie C- und C ++ - Konstanten zu erstellen? Als ich mir das Python CookBook ansah und const einführte, konnte ich eine Neuzuweisung verhindern, aber das Wörterbuch selbst kann manipuliert werden, sodass es nicht wie erwartet funktioniert.
Ich möchte auch den Zustand des Objekts unveränderlich machen. Bitte lassen Sie mich wissen, ob es eine allgemeine und gute Methode gibt.
Code aus dem Kochbuch
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()
Testprogramm
const_test.py
# -*- coding: utf-8 -*-
import const
#Die erste Zuordnung ist OK
const.dic = {'a':'b'}
#Dies ist ein Fehler
# const.dic = {'c':'d'}
#Kann hinzugefügt werden
const.dic['c'] = 'd'
#Kann gelöscht werden
del const.dic['a']
print const.dic
Recommended Posts