键入:原始值或包含

2024-10-01 11:32:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个参数化类型RawOrVariable[T] = Union[T, Variable[T]],这样

def foo(a: RawOrVariable[str]):
    ...
def bar(b: RawOrVariable[int]):
    ...

相当于

def foo(a: Union[str, Variable[str]]):
    ...
def bar(b: Union[int, Variable[int]]):
    ...

有没有捷径,或者我需要自己写一个类RawOrVariable?例如,像这样:

@type_check_only
class RawOrVariable:
   def __class_getitem__(cls, t):
       return Union[t, Variable[t]]

我必须知道什么

更新

当我使用上述RawOrVarialbe时,mypy抱怨:"RawOrVariable" expects no type arguments, but 1 given。我有什么不同的做法


Tags: 类型only参数foodefchecktypebar
1条回答
网友
1楼 · 发布于 2024-10-01 11:32:40

你很接近你需要做RawOrVariable = Union[T, Variable[T]]而不是RawOrVariable[T] = Union[T, Variable[T]]

注意,后者不是有效的Python代码RawOrVariable变量在运行时没有定义

有关更多详细信息,请参见mypy docs on generic type aliases。pep484还简要地给出了第二个示例here中泛型类型别名的示例

相关问题 更多 >