J'utilise Python 3 fonction de frappe pour une meilleure saisie semi-automatique.
Plusieurs fois, j'ai des fonctions qui renvoient clé/valeur (dictionnaire) avec des touches spécifiques. exemple super simple:
def get_info(name):
name_first_letter = name[0]
return {'my_name': name, 'first_letter': name_first_letter}
Je veux ajouter une indication de type à cette fonction pour dire aux autres utilisateurs de cette fonction à quoi s'attendre.
Je peux faire quelque chose comme:
class NameInfo(object):
def __init__(self, name, first_letter):
self.name = name
self.first_letter = first_letter
puis changez la signature de la fonction en:
def get_info(name) -> NameInfo:
Mais cela nécessite trop de code pour chaque dictionnaire.
Quelle est la meilleure pratique dans ce cas?
Comme l'a souligné Blckknght, vous et Stanislav Ivanov dans les commentaires, vous pouvez utiliser 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])
À partir de Python 3.8 vous pouvez utiliser TypedDict
qui est plus similaire à ce que vous voulez:
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]}