猿问

在 Python 中禁止 TypeVar 的特定类型

有没有什么办法让这个一个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)不支持这一点,但也许我遗漏了一些东西或者有一个解决方法(?)。


摇曳的蔷薇
浏览 171回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答