[PYTHON] Injecter les dépendances dans le module

Dans le cas de python, la dépendance peut être facilement inversée si elle est bonne pour chaque module. person.py ne dépend pas de l'implémentation de ʻAbstractPerson`.

person.py


class AbstractPerson:
    def say(self):
        raise NotImplementedError()


def talk_each():
    person_a = AbstractPerson()
    person_b = AbstractPerson()

    print(person_a.say())
    print(person_b.say())

Pour injecter une dépendance dans le module person, vous pouvez écrire:

main.py


import person


class JapanesePerson:
    def say(self):
        return "Bonjour"


class EnglishPerson:
    def say(self):
        return "Hi"


person.AbstractPerson = JapanesePerson
person.talk_each()
#Bonjour
#Bonjour
person.AbstractPerson = EnglishPerson
person.talk_each()
# Hi
# Hi

Cela ressemble vraiment à python.

Recommended Posts

Injecter les dépendances dans le module