You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypedDict中指定仅需提供一组参数中的一个?

实现二选一参数的TypedDict方案

要实现“二选一”的字段约束,最简洁的方式是用**联合类型(Union)**结合多个TypedDict子类,让类型检查器明确识别出合法的结构:

from typing import TypedDict, Union

# 定义仅包含a的子类
class AWithA(TypedDict):
    a: int

# 定义仅包含b的子类
class AWithB(TypedDict):
    b: int

# 用联合类型组合,形成最终的A类型
A = Union[AWithA, AWithB]

为什么不用Optional?

如果直接把a和b标记为Optional[int],类型检查器会允许两者都不填,这就违反了你“必须提供其中一个”的需求。而联合子类的方式可以确保:

  • 必须包含a或b中的至少一个
  • 类型检查器会对不符合的结构(比如两者都缺省)抛出提示

如果需要允许同时存在a和b,可以修改子类,把另一个字段设为可选:

class AWithA(TypedDict):
    a: int
    b: int | None  # Python 3.10+ 写法,低版本用 Optional[int]

class AWithB(TypedDict):
    b: int
    a: int | None

A = Union[AWithA, AWithB]

这样既保留了TypedDict的静态类型检查特性,又满足了二选一的参数约束。

内容的提问来源于stack exchange,提问作者Gabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:38:15