我正在使用python3输入功能来获得更好的自动完成功能.
很多时候,我有使用特定键返回键/值(字典)的函数.超级简单的例子:
def get_info(name):
name_first_letter = name[0]
return {'my_name': name, 'first_letter': name_first_letter}
Run Code Online (Sandbox Code Playgroud)
我想在此函数中添加类型提示,以告诉使用此函数的其他人期待什么.
我可以这样做:
class NameInfo(object):
def __init__(self, name, first_letter):
self.name = name
self.first_letter = first_letter
Run Code Online (Sandbox Code Playgroud)
然后将函数签名更改为:
def get_info(name) -> NameInfo:
Run Code Online (Sandbox Code Playgroud)
但它需要为每个字典提供太多代码.
在这种情况下,最佳做法是什么?
在我看来,这NamedTuple和TypedDict相当相似,Python开发人员自己承认。
关于PEP,我宁愿添加有关NamedTuple和TypedDict的共同部分,它们非常相似,后者已经在结构上起作用。你怎么看? 资源
但是后来圭多对此不太确定。
我不确定NamedTuple和TypedDict是否真的一样(除非它们都试图在静态类型的世界中处理过时的模式)。
因此,这是我懒惰的尝试,目的是使其他人在官方文档似乎缺乏的情况下进行清晰的比较。