私は、いくつかのマシンがすべて同じバージョンのさまざまなクラスを持っているという仮定の下で通信する分散コンピューティングを行っています。したがって、これらのクラスを不変にするのは良い設計のようです。悪意のあるユーザーを阻止しなければならないという意味ではなく、誤って変更されることがないように不変であるだけです。
どうすればいいですか?たとえば、定義後にそれを使用するクラスを不変にするメタクラスをどのように実装しますか?
>>> class A(object):
... __metaclass__ = ImmutableMetaclass
>>> A.something = SomethingElse # Don't want this
>>> a = A()
>>> a.something = Whatever # obviously, this is still perfectly fine.
クラスを受け取り、不変のクラスを返すデコレータ/関数など、代替メソッドも問題ありません。