Способы сделать класс неизменяемым в Python

кажется хорошим дизайном. Я занимаюсь распределенными вычислениями, в которых несколько машин обмениваются данными в предположении, что все они имеют идентичные версии различных классов. Таким образом, сделать эти классы неизменяемыми - хороший замысел; не в том смысле, что он должен помешать пользователю с плохими намерениями, просто достаточно неизменный, чтобы он никогда не изменялся случайно.

Как я могу это сделать? Например, как мне реализовать метакласс, который делает класс, использующий его, неизменяемым после его определения?

>>> class A(object):
...     __metaclass__ = ImmutableMetaclass
>>> A.something = SomethingElse # Don't want this
>>> a = A()
>>> a.something = Whatever # obviously, this is still perfectly fine.

Альтернативные методы также подходят, например декоратор / функция, которая принимает класс и возвращает неизменяемый класс.

16
задан porgarmingduod 14 February 2011 в 20:16
поделиться