O que é uma maneira pitônica de injeção de dependência?

Introdução

Para Java, a Dependency Injection funciona como OOP puro, ou seja, você fornece uma interface a ser implementada e no código da estrutura aceita uma instância de uma classe que implementa a interface definida.

Agora, para o Python, você pode fazer o mesmo, mas acho que esse método estava sobrecarregado demais no caso do Python. Então, como você o implementaria da maneira pitônica?

Caso de Uso

Digamos que este seja o código da estrutura:

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

    def do_the_job(self, ...):
        # some stuff
        # depending on some external function
A Abordagem Básica

A maneira mais ingênua (e talvez a melhor?) É exigir que a função externa seja fornecida aoFrameworkClass construtor e, em seguida, ser chamado a partir dodo_the_job método.

Código de estrutura:

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

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

Código do cliente:

def my_func():
    # my implementation

framework_instance = FrameworkClass(my_func)
framework_instance.do_the_job(...)
Pergunta, questão

A pergunta é curta. Existe alguma maneira Pythonic mais comumente usada para fazer isso? Ou talvez alguma biblioteca que suporte essa funcionalidade?

ATUALIZAÇÃO: Situação concreta

Imagine que eu desenvolva uma micro estrutura da web, que lida com autenticação usando tokens. Essa estrutura precisa de uma função para fornecer algunsID obtido do token e obter o usuário correspondente a esseID.

Obviamente, a estrutura não sabe nada sobre usuários ou qualquer outra lógica específica do aplicativo; portanto, o código do cliente deve injetar a funcionalidade getter do usuário na estrutura para fazer a autenticação funcionar.

questionAnswers(5)

yourAnswerToTheQuestion