Update appNew update is available. Click here to update.

What is Monkey Patching in Python?

Adya Tiwari
Last Updated: Jan 31, 2023
EASY

Introduction

Hey, Ninjas🥷 Monkey patching in Python is used to refresh how a piece of code behaves at run-time. A monkey fix (likewise spelled monkey-fix, MonkeyPatch) is a method for expanding or changing the runtime code of dynamic dialects (for example, Smalltalk, JavaScript, Objective-C, RubyPerl, Python, Sweet, and so on) without adjusting the first source code. Here we can change the way of behaving code at run-time. 😉

monkey patching python CN

Monkey Patching in Python

Monkey Patching🐒 is an intriguing subject of Python. Monkey-patching is a term that alludes to changing a class or module at a run time. A course or module's work can be changed at the runtime. How about we figure out this idea into a genuine model?

When we work on an enormous venture, we might experience what is happening where the outsider library isn't functioning admirably. So we endeavor to overhaul (or change) it from our task. This cycle is known as monkey patching in Python. By and large, it is kept away from the engineer. Notwithstanding, it is a piece of the improvement cycle.

In monkey patching, we can resume the class and adjust its way of behaving

We will figure out how we can utilize monkey-patching in the Python code. 🧑‍💻

We know that Python

is a powerful language; classes are changeable, so we can modify them when needed. How about we figure out the accompanying model❓

Example 

import inspect  
 
 
class MonkeyPatch:  
    def __init__(self, n1):  
        self.n1 = n1  
 
    def add(self, other):  
        return (self.n1 + other)  
 
 
obj1 = MonkeyPatch(10)  
obj1.add(20)  
print(inspect.getmembers(obj1, predicate=inspect.ismethod))  

Output: 📤

30
[('__init__', >), ('add', >)]
monkey gif

As we can find in the above code, there are two strategies in the above class - __init__ and expansion. We called the add() technique and passed 20 as a contention. It returned 30. We have characterized the MultiPatch class with the add() strategy. Assume we add the new approach to the MonkeyPatch class.

def divide(self, n2):  
    return(self.n1 - self.n2)  

 

To add the gap() strategy to MonkeyPatch class, appoint the separation capability to MonkeyPatch.

MonkeyPatch.divide = divide  

 

The recently made capability would be accessible in the MonkeyPatch class. How about we see the accompanying model❓

inspect.getmembers(obj, predicate=inspect.ismethod)  

Output:

[('__init__', >), ('subtraction', >)]

Dynamic Way of behaving of Capability

How about we see one more guide to grasp assertive conduct in a better manner❓

capability CN

Example:

# 1-monk.py  
class A:  
   def hello(self):  
      print (" Calling the hello() function")  

 

We have done a module that will be used in the code to change the way hi() capability behaves at runtime.

import new_monk  
def monkey_f(self):  
   print ("monkey_f() is being called")  
 
# replacing address of "func" with "monkey_f"  
new_monk.A.hello = monkey_f  
obj = new_monk.A()  
 
# calling function "func" whose address got replaced  
# with function "monkey_f()"  
obj.hello()  

Output:

monkey_f() is being called

 

You can practice by yourself with the help of online python compiler for better understanding.

Memory Address Evolving

Python gives the ctype module, which is utilized to change the worth of an item by memory address on the board. So it isn't prescribed to do; direct memory control is dangerous and not predictable. Conceivably, it can work with one worth and not for another. 

evolving CN

Frequently Asked Questions

What is implied by monkey patching in Python?

In Python, the term monkey fix alludes to dynamic (or run-time) changes of a class or module. In Python, we can change the way of behaving code at run-time.

Is Monkey patching in Python an intelligent thought?

Monkey patching is excellent for testing or deriding our conduct. They can be limited in production line/class decorators/metaclasses where they make a fixed new class/object from one more item to assist with "cross-cutting worries."

What is the monkey patching in Python given model?

Monkey patching in python must be finished in influential dialects, of which python is a genuine model. One model is changing a strategy at runtime instead of refreshing the item definition; similarly, adding credits at runtime is viewed as monkey patching.

What is monkey patching in rakish?

Monkey patching in python is essentially expanding or altering the first Programming interface.

What is the benefit of Monkey patching in python?

Monkey patching is a method that permits you to modify the way of behaving items at runtime.

Conclusion

We have talked about how we can accomplish the monkey-patching in Python. Yet, it comprises not many disservices and ought to be utilized cautiously. It isn't great to use in the application plan since it recognizes the source code on the circle and the noticed way of behaving. The designer can confound while investigating.

Refer to our Guided Path on CodeStudio to upskill yourself in pygameCompetitive ProgrammingJavaScriptSystem Design, and many more! If you want to test your competency in coding, you may check out the mock test series and participate in the contests hosted on CodeStudio! But suppose you have just started your learning process and are looking for questions asked by tech giants like Amazon, Microsoft, Uber, etc. In that case, you must look at the problems, interview experiences, and interview bundle for placement preparations.

Nevertheless, you may consider our paid courses to give your career an edge over others!

Do upvote our blogs if you find them helpful and engaging!

Happy Learning!

Was this article helpful ?
0 upvotes