Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何声明包含类的dict的类型_Python_Python 3.x_Type Hinting_Mypy - Fatal编程技术网

Python 如何声明包含类的dict的类型

Python 如何声明包含类的dict的类型,python,python-3.x,type-hinting,mypy,Python,Python 3.x,Type Hinting,Mypy,我试图用键入模块声明以下函数参数的类型: 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'}) pmy_func的参数必须是dict,childclass的A作为键,str作为值。实际表示法失败,请检查mypy 示例.py

我试图用
键入
模块声明以下函数参数的类型:

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'})
p
my_func
的参数必须是
dict
,childclass的
A
作为键,
str
作为值。实际表示法失败,请检查
mypy

示例.py:17:错误:列表项0具有不兼容的类型“Tuple[C,str]”


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

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

my_func({C: 'foo'})
传递C类的实例应该可以

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

如果您确实需要通过课程本身(我对此表示怀疑),您需要使用:


谢谢。注意:我真的需要通过这门课。
typing.Dict[typing.Type[A], str]
            ^^^^^^^^^^^^^^