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

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

Сообщение Anonymous »

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



p
q
p и q
p или 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»