Как реализовать троичную (3-значную) логику в Python?Python

Программы на Python
Anonymous
Как реализовать троичную (3-значную) логику в Python?

Сообщение Anonymous »

См. статью в вики. У меня есть класс, которому, естественно, нужны свойства, которые имеют значение True, False или ??. (это соответствует, например, логическому полю в SQL, которое может иметь значение True, False или NULL). Таблицы истинности для И, ИЛИ следующие:

Код: Выделить всё

p | q | p and q  | p or q
T | T | T        | T
T | N | N        | T
T | F | F        | T
N | T | N        | T
N | N | N        | N
N | F | F        | N
F | T | F        | T
F | N | F        | N
F | F | F        | F
Я хотел бы:
  • использовать логические операторы, или, и, а не как обычно
  • оставаться относительно автономной, в идеале стандартной библиотеки
Я ожидал, что смогу использовать None, но, к сожалению, None или False и False или None оценивают разные вещи (только один из них — то, что мне нужно). Что я могу сделать?
Я подумывал о создании собственного «неизвестного» класса, но не могу перезаписать поведение логического оператора.
Я нашел внешние библиотеки, такие как trinary, но вместо этого они используют синтаксис |,&.
Это логика значения NULL в SQL, поэтому, по-видимому, здесь подойдут методы имитации такого поведения.>

Вернуться в «Python»