Closed fazedordecodigo closed 7 months ago
Métodos que serão adicionados:
StringValidationContract
Diferente do .NET Python não possui sobrecarga de métodos, assim ao herdar a nova classe UuidValidationContract
o método de mesmo nome não é acessível.
Iniciei algumas discussões nos fóruns da comunidade Python com o seguinte comentário:
Galera, boa tarde! Existe alguma forma de trabalhar com sobrecarga de metodos no Python?
Exemplo:
class A:
def metodo (a: str):
print(a)
class B:
def metodo (a: number)
print(a)
class AB(A, B):
pass
metodo = AB()
metodo.metodo("teste")
metodo.metodo(1)
Se não, qual a forma pythonica de resolver este problema?
Após isso, nosso querido @dunossauro deu algumas orientações, entre elas a do comentário abaixo:
Então, esse esquema de multimethods ou dispatch em python não é uma coisa muito comum.
Pq usamos duck typing. Exatamente o oposto dessa filosofia.
Existem formas de contornar isso. Uma delas é usando o singledispatch, mas ele é single. Funciona pra um único argumento. Pra mais que isso, temos o multiple dispatch
https://pypi.org/project/multipledispatch/
Sigo com as pesquisas para a melhor implementação.
Um bom artigo sobre Duck Typing
-> Link
Method | Flexibility | Error Handling | Complexity |
---|---|---|---|
Duck Typing | High | Requires careful handling | Low to Moderate |
Abstract Base Classes | Moderate | Clear interface, easy error handling | Moderate to High |
Explicit Type Checking | Low | Straightforward error handling | Low |
Nova Feature
Baseando-se na feature dessa lib: https://github.com/andrebaltieri/Flunt/blob/main/Flunt/Validations/GuidValidationContract.cs