Member-only story

Monkey patching in Python

Elshad Karimov
2 min readMar 25, 2024
Photo by Clément Hélardot on Unsplash

Monkey patching in Python refers to the dynamic modification of a class or module at runtime. This means you can change the behavior of code after it has been compiled, allowing for adjustments to functions, methods, or even whole classes during execution. This can be particularly useful for altering or extending the behavior of third-party code or libraries, but it should be used judiciously as it can make the code more difficult to understand and maintain.

Here’s a straightforward example to illustrate monkey patching:

Example: Modifying a Method at Runtime

Suppose you’re using a third-party library with a class Greeter that has a method greet which simply prints "Hello!". But you want greet to say "Hello, world!" instead.

First, here’s the Greeter class in the hypothetical third-party library:

class Greeter:
def greet(self):
print("Hello!")

Now, you’ll monkey patch the greet method to change its behavior:

def new_greet(self):
print("Hello, world!")

# Apply the monkey patch
Greeter.greet = new_greet

# Now, when you use the Greeter class, it behaves differently
greeter = Greeter()
greeter.greet() # Output: Hello, world!

In this example, the new_greet function is defined to produce a new message. Then, it's assigned to Greeter.greet, effectively replacing the old greet method. Any new or existing instances of Greeter will use the new greet method, demonstrating how monkey patching can alter behavior at runtime.

While monkey patching is powerful, it should be used with care. Overusing it or using it inappropriately can lead to code that is hard to debug and maintain, as it breaks the expected behaviors of patched objects.

--

--

Elshad Karimov
Elshad Karimov

Written by Elshad Karimov

Software Engineer, Udemy Instructor and Book Author, Founder at AppMillers

No responses yet