>백엔드 개발 >파이썬 튜토리얼 >파이썬에서 원숭이 패치란 무엇입니까? 그것을 사용하는 방법?

파이썬에서 원숭이 패치란 무엇입니까? 그것을 사용하는 방법?

不言
不言앞으로
2019-03-18 09:40:262960검색

이 기사에서는 Python에서 원숭이 패치가 무엇인지 설명합니다. 그것을 사용하는 방법? 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

monkey 패치란 무엇입니까?

monkey 패치라는 용어는 런타임에 클래스나 모듈을 동적으로 수정하는 것을 의미하며, 버그나 기능에 대한 해결 방법으로 기존 타사 코드를 패치하려는 의도에서 비롯되었습니다. 원하는 대로 작동

이란 런타임에 메서드/클래스/속성/함수를 수정하고 새 코드를 원래 프로그램을 대체하는 솔루션, 즉 패치로 사용하는 것을 의미합니다.

몽키 패치라고 불리는 이유

몽키 패치라는 용어는 런타임에 코드를 은밀하게 변경하는 것을 가리키는 초기 용어인 게릴라 패치에서 유래한 것 같습니다. 다른 패치와 호환되지 않을 수도 있습니다. 게릴라라는 단어는 동음이의어입니다. 고릴라와 함께(또는 거의) 원숭이가 되었는데, 아마도 패치 사운드를 덜 위협적으로 만들기 위해서일 것입니다.[1] 또 다른 어원은 코드를 "몽키링하는 것"을 의미한다는 것입니다.

한 가지 방법은 게릴라, 게릴라의 영어 발음은 오랑우탄의 발음과 유사합니다. 잡다한 군대와 게릴라는 원래 군대가 아니라 마치 대체 군대와 같아서 원숭이 패치(monkeying about)라고 합니다. Fool around, naughty 및 coax를 사용하여 원숭이 패치라고 합니다. Monkey patch

Using Monkey Patch in Python

class Example():
    def func1(self):
        print('我才是原装')def func2(*args):
    print('我要取代你')def func3(*args):
    print('都给我一边去')
instance = Example()
Example.func1 = func2
instance.func1() # 我要取代你instance.func1 = func3
instance.func1() # 都给我一边去instance2 = Example()
instance2.func1() # 我要取代你

예제는 매우 간단합니다. func2는 클래스 메서드를 대체하고 func3은 인스턴스 메서드를 대체하며 최종 출력은 다음과 같습니다. 원본이 아닙니다

다른 예

gevent 모듈 사용 원숭이 패치를 만나게 됩니다

import gevent.monkey
 gevent.monkey.patch_all()

monkey 패치를 사용하면 gevent는 소켓, SSL, 스레딩 및 선택 모듈을 포함하여 표준 라이브러리의 차단 시스템 호출 대부분을 수정할 수 있습니다. 이를 협업 작업으로 전환합니다. 즉, 원숭이 패치 Monkey.patch_xxx()는 Python 표준 라이브러리의 모듈이나 함수를 gevent의 코루틴이 있는 반응형 협업 개체로 변경하는 데 사용됩니다. 이런 방식으로 원본 코드를 변경하지 않고도 애플리케이션의 차단 방법을 코루틴으로 전환할 수 있습니다.
여기 참고 https://blog.csdn.net/wangjianno2/article/details/51708658

문제 주의

몽키 패치 사용 시에도 문제가 발생하기 쉽습니다

버전 업데이트 및 변경 시 , 패치는 쉽습니다. 한 위치에 두 개의 패치를 무의식적으로 적용하면 패치가 있는지 모르는 사람들이 발생하는 일부 상황에 혼란을 겪을 수 있습니다.

위 내용은 파이썬에서 원숭이 패치란 무엇입니까? 그것을 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제