Я пытаюсь создать общий класс, чтобы выразить, что значение имеет нижнюю и верхнюю границы, и обеспечить соблюдение этих границ.
from typing import Any, Optional, TypeVar
T = TypeVar("T")
class Bounded(object):
def __init__(self, minValue: T, maxValue: T) -> None:
assert minValue <= maxValue
self.__minValue = minValue
self.__maxValue = maxValue
Однако mypy жалуется, что:
error: Unsupported left operand type for <= ("T")
Очевидно, модуль набора текста не позволяет мне выразить это (хотя похоже, что добавление Comparable
может случится в будущем).
Думаю, было бы достаточно проверить, есть ли у объекта методы __eq__
и __lt__
(по крайней мере, для моего случая использования). Есть ли в настоящее время способ выразить это требование в Python, чтобы Mypy его понял?