我正在做一些分布式计算,其中几台机器在假设它们都具有各种类的相同版本的情况下进行通信。因此,使这些类不可变似乎是一个不错的设计。并不是说它必须阻止怀有恶意的用户,它只是足够不变,以至于它永远不会被意外修改。
我该怎么办?例如,我将如何实现一个元类,使使用它的类在定义后不可变?
>>> class A(object):
... __metaclass__ = ImmutableMetaclass
>>> A.something = SomethingElse # Don't want this
>>> a = A()
>>> a.something = Whatever # obviously, this is still perfectly fine.
替代方法也很好,例如接受一个类并返回一个不可变类的装饰器/函数。