[Python nâng cao] Kỹ thuật Monkey Patching trong Python


Hôm nay, vinasupport.com sẽ hướng dẫn các bạn học cách sử dụng kỹ thuật Monkey Patching, mà mình đã sử dụng khá nhiều trong các dự án Odoo, cũng như các dự án về Python nói chung.

Monkey Patching là gì?

Monkey patching (Bản vá khỉ) là một kỹ thuật trong lập trình để thêm, sửa đổi hoặc loại bỏ chức năng mặc định của một đoạn code khi chạy mà không thay đổi mã nguồn ban đầu của nó. Việc vá lỗi chỉ có thể được thực hiện bằng các ngôn ngữ động (Dynamic Programs) như Python, Javascript,…

Khi nào sử dụng Monkey Patching?

  • Các developer thường sử dụng để sửa lỗi, thêm, loại bỏ tính năng hoặc điều chỉnh thư viện của bên thứ ba cho phù hợp với nhu cầu cụ thể của họ.
  • Việc patching thì phần sửa các class con cũng sẽ kế thừa nội dung chỉnh sửa, còn override method theo cách truyền thống là viết class kế thừa thì chỉ có class kế thừa đấy mới có phần chỉnh sửa. Còn nếu sửa trực tiếp class gốc thì bạn sẽ mất code ban đầu, nếu đó là thư vịện thì thật sự không tốt, vì nếu nâng cấp bạn sẽ mất đoạn code đã chỉnh sửa.

Cách sử dụng Monkey Patching trong Python

Giả sử bạn có một class Base với method là test_method như sau:

class Base:
    def test_method(self):
        print('This is test method')

Khi sử dụng Monkey Patching bạn sẽ viết lại như sau:

# Origin class
class Base:
    def test_method(self):
        print('This is test method')


# New method for monkey patching
def new_test_method(self):
    print('This is new test method, monkey patching by vinasupport.com')


# Patching method of class
Base.test_method = new_test_method
# Test
base = Base()
base.test_method()

Kết quả:

Đây là phương pháp rất hữu ích giúp bạn override lại các hàm của thư viện, mà không ảnh hưởng tới source code gốc. Nếu bạn có thắc mắc gì vui lòng comment bên dưới.

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web