3
respostas

Flake8, MyPy, Type hints, Code lints, List/Union

O que era antes:

def metodo(self):
    variavel = {}

Pasaria a ser:

def metodo(self) -> dict:
    variavel: Dict[str, Union[List[str], str, int]] = {}

Não sei, entendo que torna mais explicavel, mais não me parece más legivel…

O que vcs pensam?

3 respostas
def metodo(self) -> dict:
    return variavel: Dict[str, Union[List[str], str, int]] = {}

Sim se seu dicionário no campo do valor receber tanto uma lista, quanto um string e um int.

Um exemplo de possível retorno seriam esses 3 casos

my_dict = {'my_name': 'Joao'}
my_dict2 = {'my_int': 3}
my_dict3 = {'my_list': ['a', 'b', 'c']}

Esses 3 casos combinam com o typehint que você declarou.

Lembrando que na parte:

def metodo(self) -> dict:

Você precisa fazer o return desse dicionário para ficar coeso.

Acredito que seja isso

Olá, valeu. Isso tudo eu entendo. O meu ponto é que parece que vai se tornando mais feio/burocrático, um pouco mais e já será como Java o Objective-C de tão verboso.

Sim realmente ele perde um pouco do que acredito ser a facilidade do python que é a não necessidade de ficar explicitando o tipo da variável que vamos usar. Porém depois que comecei usar o PEP8 tem me salvado vários minutos de debug.