web-dev-qa-db-ja.com

Pythonキー入力が既知の3つの辞書

オートコンプリートを向上させるために、Python 3タイプ機能を使用しています。

多くの場合、特定のキーを持つキー/値(辞書)を返す関数があります。超簡単な例:

def get_info(name):
    name_first_letter = name[0]
    return {'my_name': name, 'first_letter': name_first_letter}

この関数に型ヒントを追加して、この関数を使用する他の人に期待することを伝えたいと思います。

私は次のようなことができます:

 class NameInfo(object):
     def __init__(self, name, first_letter):
         self.name = name
         self.first_letter = first_letter

次に、関数のシグネチャを次のように変更します。

def get_info(name) -> NameInfo:

しかし、辞書ごとに必要なコードが多すぎます。

その場合のベストプラクティスは何ですか?

23
Idok

コメントでBlckknght、あなたとStanislav Ivanovが指摘したように、 NamedTuple を使用できます。

from typing import NamedTuple


class NameInfo(NamedTuple):
    name: str
    first_letter: str


def get_info(name: str) -> NameInfo:
    return NameInfo(name=name, first_letter=name[0])

Python 3.8から開始 TypedDict を使用できます。これは、必要なものにより似ています。

from typing import TypedDict


class NameInfo(TypedDict):
    name: str
    first_letter: str


def get_info(name: str) -> NameInfo:
    return {'name': name, 'first_letter': name[0]}
11
Bernhard