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