web-dev-qa-db-fra.com

Python 3 avec des touches connues tapant

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?

23
Idok

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]}
11
Bernhard