gpt4 book ai didi

python - 如何声明包含类的字典类型

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:15 25 4
gpt4 key购买 nike

我正在尝试使用 typing 模块声明以下函数参数的类型:

import typing


class A(object):
pass

class B(A):
pass

class C(B):
pass

def my_func(p: typing.Dict[A, str]) -> None:
pass

my_func({C: 'foo'})
my_func

p 参数必须是 dictA 的子类作为键和 str 作为值。实际符号因 mypy 检查而失败:

example.py:17: error: List item 0 has incompatible type "Tuple[C, str]"

如何通过键入声明p的类型?

最佳答案

代码使用 C 类本身作为键,而不是 C 的实例。

my_func({C: 'foo'})

传递C类的实例应该没问题。

my_func({C(): 'foo'})
^^^--- instance, not a class itself

如果你真的需要通过类本身(我对此表示怀疑),你需要使用typing.Type :

typing.Dict[typing.Type[A], str]
^^^^^^^^^^^^^^

关于python - 如何声明包含类的字典类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41822945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com