Metaprogramação em python
metaprogramação
Este conceito consiste na manipulação do codigo usando o próprio código em tempo de execução. metaprogramação resolve alguns problemas e pode te tornar um programador mais produtivo. Para mais detalhes acesse wikipédia.
Estive trabalhando em um client
da Brasil API feito em python onde acabei utilizando este conceito para a criação dinâmica das rotas. Link do meu projeto: brasilapy
python é uma linguagem muito flexível neste ponto pois possue dunder methods
que implementa uma melhor manipulação dos objectos e classes de forma simples e sem o uso de dependências.
Exemplo:
from typing import Any
class AdicionadorDeSufixo(object):
def __init__(self, sufixo: str) -> None:
self.sufixo = sufixo
def __getattr__(self, name: str) -> Any:
return lambda: self.pronunciar(name)
def pronunciar(self, palavra: str) -> None:
terminacoes = ['ar','er','ir']
if any(palavra.endswith(sufixo) for sufixo in terminacoes):
palavra = palavra[0:-2]
return palavra + self.sufixo
sufixador = AdicionadorDeSufixo('ada')
palavra1 = sufixador.piar()
palavra2 = sufixador.pronunciar('piar')
print(palavra1, palavra2) # piada piada
Note que ambas as saidas tiveram o mesmo valor. Desta forma posso gerar valores baseado no nome do metodo chamado e criar features dinâmicas.