¿Cuál es una forma pitónica para la inyección de dependencia?

Introducción

Para Java, la Inyección de dependencias funciona como OOP pura, es decir, proporciona una interfaz para implementar y en su código marco acepta una instancia de una clase que implementa la interfaz definida.

Ahora, para Python, puede hacer lo mismo, pero creo que ese método fue una sobrecarga en el caso de Python. Entonces, ¿cómo lo implementaría de la manera pitónica?

Caso de uso

Digamos que este es el código marco:

class FrameworkClass():
    def __init__(self, ...):
        ...

    def do_the_job(self, ...):
        # some stuff
        # depending on some external function
El enfoque básico

La forma más ingenua (¿y quizás la mejor?) Es requerir que la función externa se suministre alFrameworkClass constructor, y luego ser invocado desde eldo_the_job método.

Código Marco

class FrameworkClass():
    def __init__(self, func):
        self.func = func

    def do_the_job(self, ...):
        # some stuff
        self.func(...)

Codigo del cliente:

def my_func():
    # my implementation

framework_instance = FrameworkClass(my_func)
framework_instance.do_the_job(...)
Pregunta

La pregunta es corta. ¿Hay alguna manera mejor de usar Pythonic para hacer esto? ¿O tal vez alguna biblioteca que soporte tal funcionalidad?

ACTUALIZACIÓN: Situación concreta

Imagina que desarrollo un marco web micro, que maneja la autenticación usando tokens. Este marco necesita una función para proporcionar algunosID obtenido del token y obtener el usuario correspondiente a eseID.

Obviamente, el marco no sabe nada sobre los usuarios o cualquier otra lógica específica de la aplicación, por lo que el código del cliente debe inyectar la funcionalidad del captador del usuario en el marco para que la autenticación funcione.

Respuestas a la pregunta(5)

Su respuesta a la pregunta