Я хотел бы создать новый интегральный тип, который ограничен определенным диапазоном. Я пытался:
data PitchClass = PC Int deriving (Ord, Eq, Show)
instance Bounded PitchClass where
minBound = PC 0
maxBound = PC 11
Однако я хочу чего-то, что потерпит неудачу, если будет предпринята попытка что-то вроде
PC 12
или
PC (-1)
.
Является ли общий подход к ситуации, в которой требуется наложить ограничения на создание новых типов, в которых конструкторы значений не экспортируются из модуля, а функции, возвращающие экземпляры типа и выполняющие проверки ограничений, экспортируются?
-121--782026-
Я запускаю lint следующим образом:
$ python -m pylint.lint m2test.py
с этим кодом:
import M2Crypto
def f():
M2Crypto.RSA.new_pub_key("").as_pem(cipher=None).split("\n")
Вывод lint заканчивается на:
Exception AttributeError: '_shutdown' in ignored
Этот код работает нормально при выполнении (выше на самом деле минимальный тестовый случай; но полная версия работает). Исключение игнорируется, но Bitten считает это ошибкой, поэтому останавливается на этом шаге.
Я пытался добавить «M2Crypto.threading.init () »/« M2Crypto.threading.cleanup ()» вокруг определения функции, но это не решило проблему.
Как предотвратить возникновение этой проблемы?
Я использую M2Crypto 0.21.1, pylint 0.24 и Python 2.7 (также пробовали 2.7.2) на Debian Lenny x86_64.