有没有什么办法让这个一个Python的TypeVar是不允许绑定到某些类型的?
我知道你可以将 TypeVar 限制为某些类型,有一个上限或将其标记为协变/逆变/不变,但似乎没有办法说“TypeVar 不允许是这些类型”。
基本上我想说的是类似于std::enable_if_t<!std::is_base_of_v<NotAllowedType, T>>C++ 的内容。
例如,T永远不应该是一个Exception:
from typing import Union, Generic, TypeVar
T = TypeVar('T')
class Expected(Generic[T]):
def __init__(self, value_or_error: Union[T, Exception]):
self._value_or_error = value_or_error
def is_valid(self) -> bool:
return not isinstance(self._value_or_error, Exception)
但是没有想到一种直接的方法来强制执行此操作。据我所知,大多数泛型(例如 Java、Scala、Kotlin)不支持这一点,但也许我遗漏了一些东西或者有一个解决方法(?)。
相关分类