[Python] dependency injection con i decoratori

Federico Fissore federico a fsfe.org
Ven 2 Ott 2020 17:12:16 CEST


Matteo Scarpa wrote on 02/10/20 16:30:
> Lo puoi fare scrivendo una cosa tipo:
> 
> def decoratore(func, collaboratori):
> 	def inner(*args, **kwargs):
> 		...
> 	return inner
> 
> @decoratore(collaboratore1)
> def func1():
> 	pass
> 
> Spero di essere stato chiaro. Se vuoi vedere cose piú avanzate 
> suggerisco di dare una sbirciata al sorgente di Flask che fa proprio 
> queste cose.
> 

Ti ringrazio Matteo, darò un'occhiata ai sorgenti di Flask

La mia idea era di evitare di passare tutti i collaboratori ogni volta 
che aggiungo il decoratore: l'unico modo che conosco per farlo è 
definirli a livello di modulo, quindi in fase di testing diventa poi 
difficile passare al decoratore un collaboratore finto o mocckato, a 
meno di fare monkey patching

federico


Maggiori informazioni sulla lista Python