Словарь 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:
Но для каждого словаря требуется слишком много кода.
Какова лучшая практика в этом случае?
Ответы
Ответ 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]}