Definition
It is a way of using Objects of other Classes by creating an object externally and passing it as an argument.
Example
class Weapon:
def __init__(self, name):
self.name = name
class Player:
def __init__(self, name, weapon): # weapon argument is added as a placeholder
self.name = name
self.weapon = weapon
def attack(self):
print(f"{self.name} attacks with {self.weapon.name}!")
# We create the weapon externally
player_weapon = Weapon("Bow")
# We inject the weapon into the Player class
player = Player("Archer", player_weapon)
player.attack()
Without Dependency Interjection
class Weapon:
def __init__(self, name):
self.name = name
class Player:
def __init__(self, name):
self.name = name
self.weapon = Weapon("Sword") # Player class depends on Weapon()
def attack(self):
print(f"{self.name} attacks with {self.weapon.name}!")
player = Player("Hero")
player.attack()