I\'m a C# dev moving into some Python stuff, so I don\'t know what I\'m doing just yet. I\'ve read that you don\'t really need Dependency Injection with Python. I\'ve been told
Python functions are first-class objects, so you can assign any function to the identifier:
class Person:
def greetings(self):
return "Hi!"
def happy_greetings(self):
return "Hi! You're awesome!"
mike = Person()
mike.greetings() # "Hi!"
Person.greetings = happy_greetings
mike.greetings() # "Hi! You're awesome!"
Think of method identifier as a reference to some function. By changing the reference, Python interpreter will find and execute whatever it refers to. However, instead of doing this by hand, I suggest you using some mature module, like unittest.mock, since there are plenty of pitfalls like managing stub scope, etc.