Подтвердить что ты не робот

Словарь 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:

Но для каждого словаря требуется слишком много кода.

Какова лучшая практика в этом случае?

4b9b3361

Ответ 1

Как указывает Blckknght, вы и Станислав Иванов в комментариях можете использовать 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]}