【问题标题】:Mypy: incompatible type error during set updateMypy:设置更新期间不兼容的类型错误
【发布时间】:2021-12-21 12:01:38
【问题描述】:

如果 set 使用 add()

用新的 tuple 更新,Mypy 会返回错误

code.py

adgroups_by_campaign_id: Dict[CampaignId, Set[str]] = defaultdict(set)
for customer_id, campaign_ids in campaigns_per_customer_id.items():
    adgroups = get_adgroups_in_campaings(ads_client, customer_id, campaign_ids, adgroup_names)
    for adgroup in adgroups:
        adgroups_by_campaign_id[CampaignId(adgroup['campaign_id'])].add(
            (adgroup['adgroup_name'], adgroup['adgroup_resource_name']) -> RETURN ERROR
        )

错误正文

 error: Argument 1 to "add" of "set" has incompatible type "Tuple[str, str]"; expected "str"

据我所知,将新连音添加到集合中是常见的做法。

add() 方法可以将元组对象作为元素添加到集合中

为什么mypy认为不允许?

【问题讨论】:

  • 因为你之前告诉 mypy 是Set[str]
  • 错误信息很清楚,您将其注释为Set[str],但您尝试将Tuple[str, str] 添加到此集合中,但它需要str....跨度>

标签: python types mypy typing


【解决方案1】:

adgroups_by_campaign_id 被标记为Dict[CampaignId, Set[str]],这意味着mypy 将期望所有值都是包含字符串的集合,而不是字符串的元组。

Set[str] 应改为Set[Tuple[str, str]]

【讨论】:

  • 我的注意力不集中。谢谢!
猜你喜欢
  • 2017-10-10
  • 2022-06-14
  • 1970-01-01
  • 2021-06-02
  • 2017-10-14
  • 2021-12-31
  • 2020-11-21
  • 2021-09-19
  • 2022-01-08
相关资源
最近更新 更多