آموزش monkey patch در پایتون

امیرحسین بیگدلو June 2023

پایتون یک زبان برنامه نویسی پویا است. نه تنها دارای یک سیستم نوع پویا است که در آن می توان یک متغیر را ابتدا به یک نوع اختصاص داد و بعداً تغییر داد، بلکه مدل شیء آن نیز پویا است. این به ما امکان می دهد رفتار آن را در زمان اجرا تغییر دهیم. پیامد این امر امکان monkey patch است.

 

وصله میمون تکنیک اصلاح پویا یک قطعه کد در زمان اجرا است. در واقع با انجام وصله میمون، رفتار کد را تغییر می‌دهیم اما بدون اینکه روی کد منبع اصلی تأثیر بگذاریم. مفهوم monkey patch در پایتون به اصلاح یا به روز رسانی یک کد یا کلاس یا هر ماژول در زمان اجرا اشاره دارد. به عبارت ساده، می‌توانیم رفتار یا عملکرد یک کلاس/ماژول را در زمان اجرا بدون تغییر کل کد پایتون تغییر دهیم.

 

دوره پیشنهادی: دوره اول آموزش پروژه محور پایتون

 

پایتون یک زبان تفسیری است، بنابراین می توانیم در حین اجرای برنامه تغییراتی ایجاد کنیم. ما می توانیم از این ویژگی در پایتون برای تغییر رابط یک کلاس یا یک ماژول استفاده کنیم. اگر با کد یا کدهای قدیمی از افراد دیگر سروکار داریم که نمی‌خواهیم آن را به طور گسترده تغییر دهیم، اما همچنان می‌خواهیم آن را با نسخه‌های مختلف کتابخانه‌ها یا محیط‌ها اجرا کنیم، مفید است.

 

به کد زیر دقت کنید:

class A:
    def show(self):
        print('show method...')

def greeting():
    print('Hello!!!')


A.show = greeting

A.show()

# OUTPUT
Hello!!!

 

در قطعه کد بالا از روش monkey patch پایتون برای تغییر رفتار متد show استفاده کردیم. در کد بالا، رفتار پیشفرض متد show غیرفعال شده و با صدا زدن متد show، تابع greeting فعال خواهد شد.

ویدیوهای مشابه



ارسال نظر


hamidreza

1 ماه قبل پاسخ به نظر

یه مقدار گنگ هست .الان من مثلا کجا میتونم ازش استفاده کنم؟خیلی کلی گفتید هنگام رانتایم اما خوب این باز نمیرسونه مطلب رو ...

ارسال نظر



امیرحسین بیگدلو

1 ماه قبل

سلام
در دوره تست نویسی جنگو به شکل واقعی از monkey patching استفاده کردیم، میتونید اون دوره رو ببینید تا مفهوم رو کامل متوجه بشید.
سورس کد اون دوره توی گیتهاب هم هست که میتونید اون رو هم ببینید.

pkpy

4 ماه قبل پاسخ به نظر

آقا امیر خیلی ارادت داریم
ممنون بخاطر آموزش هاتون

ارسال نظر



hosein

11 ماه قبل پاسخ به نظر

من پایتون رو جای دیگه ایی یادگرفتم. ولی عاشق ویدیو های تک قسمتیتون هستم. میتونم بگم اگر کسی خواست تا مباحث پیشرفته رو یاد بگیره شما عالی هستید

ارسال نظر



Alireza

1 سال قبل پاسخ به نظر

عالی بود
ولی هنوزم نفهمیدم کجاها کاربرد داره

ارسال نظر



مونگارد