Я делаю некоторые распределенные вычисления, в которых несколько машин общаются в предположении, что все они имеют одинаковые версии различных классов. Таким образом, кажется, что это хороший дизайн, чтобы сделать эти классы неизменными; не в том смысле, что он должен помешать пользователю с плохими намерениями, просто неизменным, что он никогда не модифицируется случайно.
Как я могу это сделать? Например, как мне реализовать метакласс, который сделает класс неизменным после его определения?
>>> class A(object):
... __metaclass__ = ImmutableMetaclass
>>> A.something = SomethingElse # Don't want this
>>> a = A()
>>> a.something = Whatever # obviously, this is still perfectly fine.
Альтернативные методы также прекрасны, например, декоратор/функция, которая берет класс и возвращает неизменяемый класс.